这儿每天分享一个 iOS 的新知识,快来重视我吧

前语

之前文章传送门:

iOS 小组件开发第一篇:根底介绍
iOS 小组件开发第二篇:时间线
iOS 小组件开发第三篇:实战
iOS 小组件开发第四篇:小组件的尺度
iOS 小组件开发第五篇:开发可装备的小组件
iOS 小组件开发第六篇:点击事件‍和交互
iOS 小组件开发第七篇:锁屏小组件
iOS 小组件开发第八篇:灵动岛开发
iOS 小组件开发第九篇:在 iOS 17 上创建可交互的小组件
iOS 小组件开发第十篇:小组件动画

前面讲了许多小组件的内容,也讲了 iOS 17 中新增的过渡动画,在 iOS 17 之前动画一直是被禁用的,但是有人发现在一些应用的小组件中仍然有动画存在,比如下边这种:

iOS 小组件开发第十一篇:问候那些研究小组件动画的同行们

他们是怎么在禁用动画的情况下做到的呢?许多人都好奇,甚至有人花钱悬赏来完成这种计划,我也跟踪了一下这件事,主要有几个计划。

计划一:每秒刷一次

这个计划主要是使用小组件的时间线,每秒钟调用一次 reloadAllTimelines 方法,然后一帧一帧来切换 UI,从而完成一个“假动画”。

iOS 小组件开发第十一篇:问候那些研究小组件动画的同行们

这种计划比较适合做帧动画,但是关于动画的流畅性有要求的话就不行了,我也看到有一些其他 App 使用了这种计划的,比如 colorful:

iOS 小组件开发第十一篇:问候那些研究小组件动画的同行们

这个计划是有开源的,代码库地址:github.com/lexrus/LexC…

计划二:使用特别字体

这个计划是我完全没想到的,大概思路是自己制作一种特别的字体,生成 ttf 文件导入项目,不同的数字组合可以有不同的字符显示,类似这样:

iOS 小组件开发第十一篇:问候那些研究小组件动画的同行们

作者使用这个思路做了一个简略闪烁动画:

iOS 小组件开发第十一篇:问候那些研究小组件动画的同行们

项目地址:github.com/liudhzhyym/…

计划三,万能小组件计划

这个计划是万能小组件的作者开源出来的,基本上完成了各个方向的平移、旋转、缩放动画,动画也是平滑的,目前来看是最好的计划,如果我们想在自己的小组件中添加动画,可以使用这个项目:github.com/TopWidgets/…

iOS 小组件开发第十一篇:问候那些研究小组件动画的同行们

题外话

我十分敬佩有这么多十分牛的同行,在苹果没有敞开 API 的情况下能研究出这些计划,这些计划开源出来之后必定程度上会被滥用,所以相信不久之后苹果可能还会想办法制止,不过无论如何这种研究的精力是十分值得我们一切开发者学习的。

这儿每天分享一个 iOS 的新知识,快来重视我吧

本文同步自微信大众号 “iOS新知”,每天按时分享一个新知识,这儿只是同步,想要及时学到就来重视我吧!