iOS 小组件开发第十一篇:致敬那些钻研小组件动画的同行们

这里每天分享一个 iOS 的新知识,快来关注我吧

前言

之前文章传送门:

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

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

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

方案一:每秒刷一次

这个方案主要是利用小组件的时间线,每秒钟调用一次 reloadAllTimelines 方法,然后一帧一帧来切换 UI,从而实现一个"假动画"。

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

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

方案二:利用特殊字体

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

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

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

方案三,万能小组件方案

这个方案是万能小组件的作者开源出来的,基本上实现了各个方向的平移、旋转、缩放动画,动画也是平滑的,目前来看是最好的方案,如果大家想在自己的小组件中增加动画,可以利用这个项目:github.com/TopWidgets/...

题外话

我非常敬佩有这么多非常牛的同行,在苹果没有开放 API 的情况下能钻研出这些方案,这些方案开源出来之后一定程度上会被滥用,所以相信不久之后苹果可能还会想办法禁止,不过无论如何这种钻研的精神是非常值得我们所有开发者学习的。

这里每天分享一个 iOS 的新知识,快来关注我吧

本文同步自微信公众号 "iOS新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!

相关推荐
方白羽6 小时前
Android 开发中,准确判断应用处于“前台(Foreground)”还是“后台(Background)
android·app·客户端
Swift社区9 小时前
使用 MetricKit 监控应用性能
ios·swiftui·swift
LawrenceMssss10 小时前
由于创建一个完整的App涉及到多个层面(如前端、后端、数据库等),并且每种语言通常有其特定的用途(如Java/Kotlin用于Android开发,Swift/Objective-C用于iOS开发,Py
android·java·ios
2501_9159214314 小时前
如何在苹果手机上面进行抓包?iOS代理抓包,数据流抓包
android·ios·智能手机·小程序·uni-app·iphone·webview
Boyang_14 小时前
在 iOS 26 上@property 的一个小 bug
ios
Swift社区15 小时前
LeetCode 374 猜数字大小 - Swift 题解
算法·leetcode·swift
七牛云行业应用15 小时前
iOS 19.3 突发崩溃!Gemini 3 导致 JSON 解析失败的紧急修复
人工智能·ios·swift·json解析·大模型应用
初级代码游戏16 小时前
iOS开发 SwiftUI 6 :List
ios·swiftui·swift
00后程序员张16 小时前
iOS APP 性能测试工具,监控CPU,实时日志输出
android·ios·小程序·https·uni-app·iphone·webview
Digitally16 小时前
如何在电脑上轻松使用 iPhone 作为 U 盘
ios·电脑·iphone