Apple's Widget Backdoor - 如何用受限的 API 在小组件上实现动画效果
偶然被油管推送了这个视频,看完只能说太神奇了。
苹果允许开发者在 iOS 小组件上放置自己的内容,但是有一个重大限制:只能提供告诉系统在什么时间展示什么内容,而没法从主动刷新/重绘小组件。而且每次内容刷新之间至少需要间隔 5 分钟。然而,在此之外有两个小漏洞:
- 苹果为了自己的“时钟” App 能够显示秒针,留下了一个能以 20 fps 旋转某个 view 的私有 API,在某个 XCode 版本不慎暴露了出来
- 应用可以在小组件上放置一个 timer,放置后可以以每秒刷新一个时间文本(例如 0:01)
利用这两个极度受限的组件,视频作者却能用各种神奇的技巧(例如自定义连字、缩放调整、组件堆叠),在小组件上实现自定义的动画效果,甚至能以 60fps 运行。
怎么做到的?看视频吧:https://www.youtube.com/watch?v=NdJ_y1c_j_I