如何用中间态动画效果显示小部件更改

小部件中间动画演示

一个演示如何使用中间状态来对小部件更改进行动画效果的演示。

必备

此演示基于 Xcode 15 中的 SwiftData 演示。目前,您需要 Xcode 15 Beta 才能打开此项目并在 iOS 17 中的设备或模拟器上运行。

演示时间

ezgif-1-6ad223da6f

  1. 构建并安装应用
  2. 在主屏幕中添加小部件
  3. 启动应用,添加一些提醒事项
  4. 返回主屏幕,现在您可以看到您先前添加的提醒事项
  5. 点击左边的圆圈,这样会将一条提醒事项标记为“已完成”
  6. 现在您可以看到圆圈里有一个对勾图标,然后该图标消失,动画效果非常好

实施细节

实现此效果的关键在于:

  1. 当点击带有AppIntent按钮时,将调用AppIntent的执行方法
  2. 在您成功执行操作后,需要重建时间线
  3. 时间线至少应包含两个条目:一个用于显示“最近完成”的项(在本例中,指其完成日期距现在不到2秒的提醒事项);另一个用于显示未完成的项。
  4. 在 iOS 17 中,由系统添加动画,以对时间线中的两个条目之间进行动画效果。

GitHub

点击跳转