jwa*_*s91 3 ios swift widgetkit swiftui
我正在创建一个小部件,它有一个从日期开始倒计时的文本字段,如下所示:
Text(endDate, style: .relative)
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是作为其相对值,一旦达到零,当 endDate 成为过去时,它将继续重新计数。
有没有办法在文本为零时终止文本?或者我必须用计时器重建这个功能吗?
我需要做的就是从开始日期到结束日期倒计时,然后使文本字段无效或显示一条消息。
以下是如何创建倒计时,并在时间结束时显示一些其他文本。
endDate- 如果是,nil则意味着倒计时结束:struct SimpleEntry: TimelineEntry {
let date: Date
var endDate: Date?
}
Run Code Online (Sandbox Code Playgroud)
struct SimpleProvider: TimelineProvider {
...
func getTimeline(in context: Context, completion: @escaping (Timeline<SimpleEntry>) -> Void) {
let currentDate = Date()
let endDate = Calendar.current.date(byAdding: .second, value: 15, to: currentDate)!
let entries = [
SimpleEntry(date: currentDate, endDate: endDate),
SimpleEntry(date: endDate),
]
let timeline = Timeline(entries: entries, policy: .never)
completion(timeline)
}
}
Run Code Online (Sandbox Code Playgroud)
struct WidgetEntryView: View {
var entry: Provider.Entry
var body: some View {
if let endDate = entry.endDate {
Text(endDate, style: .relative)
} else {
Text("Timer finished")
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
586 次 |
| 最近记录: |