You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

watchOS复杂功能开发:如何在CLKRelativeDateTextProvider旁添加文本

解决方案

使用CLKTextProvider的多文本拼接API即可实现静态前缀+动态计时器的组合效果,CLKComplicationTemplateUtilitarianLargeFlat的textProvider原生支持传入拼接后的复合文本提供器。

实现步骤

  • 创建静态文本提供器,内容为你需要的前缀「GBT * 」
  • 保留原有的CLKRelativeDateTextProvider配置,若要显示秒级倒计时需要在calendarUnits中添加.second
  • 调用CLKTextProvider的拼接方法,将两个文本提供器合并,分隔符按需设置即可
  • 将拼接后的文本提供器赋值给模板的textProvider

修改后的完整代码

func createUtilitarianLargeTemplate(prayer: Prayer?) -> CLKComplicationTemplate {
    let myComplicationTemplate = CLKComplicationTemplateUtilitarianLargeFlat()
    
    // 创建前缀静态文本提供器
    let prefixTextProvider = CLKTextProvider(format: "GBT * ")
    
    // 倒计时文本提供器,添加.second单位以显示秒数
    let dateProvider = CLKRelativeDateTextProvider()
    if let prayer = prayer {
        dateProvider.date = prayer.prayerTime.prayerDate
        dateProvider.calendarUnits = [.hour, .minute, .second]
        dateProvider.relativeDateStyle = .timer
    }
    
    // 拼接两个文本提供器
    let combinedTextProvider = CLKTextProvider(byJoining: [prefixTextProvider, dateProvider], separator: "")
    
    // 赋值给模板
    myComplicationTemplate.textProvider = combinedTextProvider

    return myComplicationTemplate
}

补充说明

  • 如果需要调整前缀和计时器之间的间距,可以把拼接时的separator参数改为空格或者其他空白字符
  • 如果需要前缀和计时器显示不同的颜色,可以分别给prefixTextProvider和dateProvider设置tintColor属性
  • 该实现方式兼容所有支持CLKComplicationTemplateUtilitarianLargeFlat的watchOS版本,不需要自定义渲染视图

内容的提问来源于stack exchange,提问作者SwiftiSwift

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 18:06:08