如何在 CLKRelativeDateTextProvider 旁边添加文本

Posted

技术标签:

【中文标题】如何在 CLKRelativeDateTextProvider 旁边添加文本【英文标题】:How to have Text next to CLKRelativeDateTextProvider 【发布时间】:2021-05-13 00:20:05 【问题描述】:

我正在构建 watchOS 复杂功能,并且我想要一个计时器来倒计时我使用以下内容所做的事情:

func createUtilitarianLargeTemplate(prayer: Prayer?) -> CLKComplicationTemplate 
    let myComplicationTemplate = CLKComplicationTemplateUtilitarianLargeFlat()
    let dateProvider = CLKRelativeDateTextProvider()

    if let prayer = prayer 
        dateProvider.date = prayer.prayerTime.prayerDate
        dateProvider.calendarUnits = [.hour, .minute]
        dateProvider.relativeDateStyle = .timer
    

    myComplicationTemplate.textProvider = dateProvider

    return myComplicationTemplate

但我想在UtilitarianLarge 并发症系列中的计时器旁边显示一些文本。这怎么可能,因为我无法在dateProvider 中设置文本。

我想要实现的是以下字符串:

GBT * 15:24:12

所以我想在计时器前有 "GBT * "。这怎么可能?不知何故,这一定是可能的,因为我在 Appstore 上看到了实现这一点的其他复杂情况

【问题讨论】:

【参考方案1】:

直到 watchOS 6 才将 init(format:_:) 添加到 CLKTextProvider。

let myComplicationTemplate = CLKComplicationTemplateUtilitarianLargeFlat()
let dateProvider = CLKRelativeDateTextProvider()

dateProvider.date = Date()
dateProvider.calendarUnits = [.hour, .minute]
dateProvider.relativeDateStyle = .naturalAbbreviated

let finalText = CLKTextProvider(format: "GBT * %@", dateProvider)

myComplicationTemplate.textProvider = finalText

对于 watchOS 5 及之前的版本,this 是唯一的好方法...

【讨论】:

以上是关于如何在 CLKRelativeDateTextProvider 旁边添加文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在表单提交后保留文本(如何在提交后不删除自身?)

如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”

如何在 JDBC 中启动事务?

如何在 Fragment 中调用 OnActivityResult 以及它是如何工作的?

如何使用 Firebase 在 Web 上托管 Flutter?它的效果如何?