【发布时间】:2020-10-01 12:51:17
【问题描述】:
我有一个带有倒计时功能的 iOS 14 小部件
Text(foo, style: .timer)
当时间少于 1 分钟时,如何将文本颜色更改为红色?
【问题讨论】:
标签: swift swiftui widget ios14 widgetkit
我有一个带有倒计时功能的 iOS 14 小部件
Text(foo, style: .timer)
当时间少于 1 分钟时,如何将文本颜色更改为红色?
【问题讨论】:
标签: swift swiftui widget ios14 widgetkit
您可以通过以下方法为1 minute 创建倒计时,当它位于10 seconds 左侧时,文本颜色变为红色。时间一到,倒计时又开始了。
displayDate 是总时间(此处为 1 分钟):struct SimpleEntry: TimelineEntry {
let date: Date
let displayDate: Date
var isDateClose = false
}
struct SimpleProvider: TimelineProvider {
...
func getTimeline(in context: Context, completion: @escaping (Timeline<SimpleEntry>) -> Void) {
let currentDate = Date()
let firstDate = Calendar.current.date(byAdding: .second, value: 50, to: currentDate)!
let secondDate = Calendar.current.date(byAdding: .second, value: 60, to: currentDate)!
let entries = [
SimpleEntry(date: currentDate, displayDate: secondDate),
SimpleEntry(date: firstDate, displayDate: secondDate, isDateClose: true),
]
let timeline = Timeline(entries: entries, policy: .atEnd)
completion(timeline)
}
}
struct SimpleWidgetEntryView: View {
var entry: SimpleProvider.Entry
var body: some View {
Text(entry.displayDate, style: .timer)
.foregroundColor(entry.isDateClose ? .red : .primary)
}
}
这是一个GitHub repository,其中包含不同的小部件示例,包括倒计时小部件。
【讨论】: