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新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!

相关推荐
2501_915909063 小时前
HTTPS 错误解析,常见 HTTPS 抓包失败、443 端口错误与 iOS 抓包调试全攻略
android·网络协议·ios·小程序·https·uni-app·iphone
HarderCoder12 小时前
在同步代码里调用 async/await:Task 就是你的“任意门”
swift
他们都不看好你,偏偏你最不争气15 小时前
【iOS】UIViewController
开发语言·macos·ios·objective-c·cocoa
前端小超超19 小时前
如何配置capacitor 打包的ios app固定竖屏展示?
前端·ios·web app
HarderCoder20 小时前
Swift 三目运算符指南:写法、场景与避坑
swift
CocoaKier20 小时前
AI让35岁程序员再次伟大
ios·微信小程序·aigc
库奇噜啦呼20 小时前
【iOS】单例模式
ios·单例模式
2501_9159090620 小时前
苹果上架App软件全流程指南:iOS 应用发布步骤、App Store 上架流程、uni-app 打包上传与审核技巧详解
android·ios·小程序·https·uni-app·iphone·webview
2501_9159214320 小时前
iOS 文件管理与能耗调试结合实战 如何查看缓存文件、优化电池消耗、分析App使用记录(uni-app开发与性能优化必备指南)
android·ios·缓存·小程序·uni-app·iphone·webview
2501_9159184121 小时前
App 苹果 上架全流程解析 iOS 应用发布步骤、App Store 上架流程
android·ios·小程序·https·uni-app·iphone·webview