iOS 14文本(),带天数计时器



我正在iOS 14中构建一个小部件,用于倒计时,直到事件发生。我希望计时器具有"天"、"小时"、"分钟"one_answers"秒"。到目前为止,我发现Text(someFutureDate, style: .timer)工作(几乎(完美。唯一的缺点是它只计算hours:minutes:seconds

目前,我的应用程序中的下一个事件还有79天,所以显示1915小时并不是最方便用户的事情。有人有显示days:hours:minutes:seconds的妙招吗?

下面的代码为您提供了"2天3小时";在文本中。

let components = DateComponents(day: 2, hour: 3, minute: 4, second: 5)
let futureDate = Calendar.current.date(byAdding: components, to: Date())!
Text(futureDate, style: .relative)

"文本"在任何时候都只显示两个日期组件。一旦天数降至零,标签就变为"0";X小时Y分钟";,一旦小时降到零,标签就变为"0";X分钟、Y秒";Apple处理文本标签中的时间格式,因此您不能修改样式之外的格式(.reversal/offset/.timer(。

有一个视图,您可以像一样附加日期和计时器

struct ContentView: View {
let days: String
var body: some View {
HStack { 
Text(days)
Text(":")
Text(Date(), style: .timer)
}
}
}

您可以使用TimelineProvider并使小部件在每个午夜更新

func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
let dayremaining = 10 // your day from main app
let midnight = Calendar(identifier: .gregorian).startOfDay(for: Date())
let timeline = Timeline(entries: [ContentView(days:dayremaining)], policy: .after(midnight))
}

最新更新