科技报道|开发者谈 iOS 14 小组件:似乎是「鸡肋」( 二 )


根据应用的需求 , 不同尺寸的小组件可以用来展示不同复杂程度的信息 , 应用也不一定提供所有尺寸的小组件 。
叠放系统提供了「智能叠放」小组件 , 他可以将多个小组件叠放在一起 , 用户可以上下滑动来切换当前展示的内容 。 另外 , iOS 会尽可能地为用户展示合适的当前内容 。
科技报道|开发者谈 iOS 14 小组件:似乎是「鸡肋」智能叠放
除此之外 , 你也可以手动将两个组件叠放在一起 , 只要他们的尺寸相同即可:
科技报道|开发者谈 iOS 14 小组件:似乎是「鸡肋」手动叠放小组件
SwiftUI新的小组件框架是 SwiftUI only 的 , 这意味着你不能使用 SwiftUI 以外的界面技术进行构建 , 这是历史性的第一次 。
从好的方面看 , 除了让构建界面的成本降低以外 , SwiftUI 有个额外的好处:跨平台 , 当然这里指的是 Apple 的平台 。
使用 SwiftUI 构建的小组件可以原生支持 iOS 和 macOS , 并且 iOS 14 和 macOS Big Sur 上有同样的设计语言 , 这是构建 iOS 和 macOS 融合的应用里面很重要的一环 。
关于推动 iOS 应用运行在 macOS 上 , 可以看出 Apple 花了巨大的精力 , 不过这个是另一个很大的话题 , 在这里就不展开了 。
不好的方面俗话说天下没有免费的午餐 , Apple 提供了这么多有趣的特性 , 想必新的小组件一定有什么坑吧?你猜对了 。
更弱的交互能力在 iOS 14 之前 , Apple 也不建议在小组件做复杂的交互 , 很多操作是被禁止的 , 例如列表滚动和文字输入 。 而在 iOS 14 的小组件里面 , Apple 将这个限制推到了极限:几乎做不了交互 。
为了避免陷入过于难懂的技术讨论 , 我将这件事尽可能简单化地描述:

  • 在以前 , 小组件可以「就地」处理一些工作 , 例如使用 AutoSleep 的「熄灯」功能告诉应用开始睡觉了 。
  • 在之后 , 点击小组件一定会打开相应的主应用 , 可以传递信息给主应用进行处理 , 例如导航到应用内的某个页面 。
这样的改动对于依赖小组件交互的应用是一个毁灭性的打击 , 例如著名的 PCalc , 则无法在 iOS 14 实现一个小组件计算器 , 因为你点了按钮之后就打开应用了 。 还有启动器一类的应用 , 处理 URL 跳转的时候需要跳两次 , 这是你期待的体验么?
科技报道|开发者谈 iOS 14 小组件:似乎是「鸡肋」PCalc 小组件计算器
科技报道|开发者谈 iOS 14 小组件:似乎是「鸡肋」点击后打开应用
所以其实 iOS 14 小组件就是信息展示加上链接导航的一些方块 , 这样理解就不会期待过高 。
另外 , 实际上在 iOS 13 的几个版本里面 , 桌面小组件已经出现了不能响应点击事件的问题 , 当时开发者们普遍认为是 Bug , 现在回过头来看可能是故意的 。
无法主动更新数据当你看到一个 iOS 13 的小组件时 , 小组件可以主动获取最新的数据 , 但 iOS 14 的小组件却不是这样工作的 。
在 iOS 14 上 , 系统会向小组件询问一系列的数据 , 并根据当前的时间将获取到的数据展示出来 。
由于代码并不是主动运行的 , 小组件更偏向于「静态的」信息展示(连动画和视频也都是被禁止的) , 尽管信息可以通过某种方式更新 。 举个简单的例子 , 你甚至无法通过小组件记录剪贴板 , 剪贴板工具必须提供一个按钮 , 点了之后跳到应用内去完成记录 。


推荐阅读