如何解决iOS 14 Text,带有天数计时器
我正在iOS 14中构建一个小部件,以倒计时直到发生事件为止的时间。我希望计时器具有天,小时,分钟和秒。到目前为止,我发现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)
文本一次仅显示两个日期部分。如果天数降为零,则标签更改为“ X小时,Y分钟”,一旦小时数降为零,则标签更改为“ X分钟,Y秒”。Apple处理文本标签中的时间格式,因此您除了样式(.relative / .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))
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。