首页 > 解决方案 > iOS 14 Text() 带天数计时器

问题描述

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

目前,我的应用程序中的下一个事件是 79 天之后,因此显示 1,915 小时并不是最用户友好的事情。有没有人有一个聪明的技巧来展示days:hours:minutes:seconds

标签: texttimerswiftuiwidgetios14

解决方案


有一个观点,你可以附加天数和计时器,比如

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))

    }

推荐阅读