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

相关推荐
万少7 分钟前
第五款 HarmonyOS 上架作品 奇趣故事匣 来了
前端·harmonyos·客户端
点金石游戏出海2 小时前
每周资讯 | Krafton斥资750亿日元收购日本动画公司ADK;《崩坏:星穹铁道》新版本首日登顶iOS畅销榜
游戏·ios·业界资讯·apple·崩坏星穹铁道
90后的晨仔4 小时前
Xcode16报错: SDK does not contain 'libarclite' at the path '/Applicati
ios
finger244805 小时前
谈一谈iOS线程管理
ios·objective-c
Digitally5 小时前
如何将大型视频文件从 iPhone 传输到 PC
ios·iphone
梅名智5 小时前
IOS 蓝牙连接
macos·ios·cocoa
美狐美颜sdk13 小时前
跨平台直播美颜SDK集成实录:Android/iOS如何适配贴纸功能
android·人工智能·ios·架构·音视频·美颜sdk·第三方美颜sdk
恋猫de小郭17 小时前
Meta 宣布加入 Kotlin 基金会,将为 Kotlin 和 Android 生态提供全新支持
android·开发语言·ios·kotlin
泓博18 小时前
Objective-c把字符解析成字典
开发语言·ios·objective-c
Daniel_Coder19 小时前
Xcode 中常用图片格式详解
ios·xcode·swift