SwiftUI 和 WidgetKit - 自动更新组件

问题描述

我正在使用 WidgetKit,我发现用 init(Date,style: Text.DateStyle) 初始化的文本组件正在创建自动更新的文本。这很特别,因为 iOS 小部件通常需要设置关于何时更新视图的时间线。遗憾的是,根据有限的预算安排这些更新是由操作系统决定的,因此并不可靠。

您是否知道其他 SwiftUI 视图会自动更新(也可能在小部件中被动更新)?动画形状也很不错。

我已经尝试过使用发布计时器,但它在小部件中不起作用。

解决方法

根据Apple's documentation,唯一的自更新SwiftUI 视图是Text,配置为显示相对日期或时间。有关详细信息,请参阅 Displaying Dynamic Dates in Widgets

选项是:

Text(futureDate,style: .relative)
Text(futureDate,style: .offset)
Text(futureDate,style: .timer)
Text(aprilFirstDate,style: .date)
Text("Date: \(aprilFirstDate,style: .date)")
Text(startDate ... endDate)
Text("The meeting will take place: \(startDate ... endDate)")