我正在使用模板.graphicCorner
创建一个CLKComplicationTemplateGraphicCornerTextImage
ClockKit并发症。正如Tech Talk Developing Complications for Apple Watch Series 4中所提到的,应该可以组合多个不同颜色的文本提供者。
不幸的是我可以让它发挥作用。
这是我在ComplicationController.swift
的代码
func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) {
switch complication.family {
…
case .graphicCorner:
if #available(watchOSApplicationExtension 5.0, *) {
let template = CLKComplicationTemplateGraphicCornerStackText()
let firstTextProvider = CLKSimpleTextProvider(text: "first")
firstTextProvider.tintColor = UIColor.green
let secondTextProvider = CLKSimpleTextProvider(text: "second")
secondTextProvider.tintColor = UIColor.red
let thirdTextProvider = CLKSimpleTextProvider(text: "third")
thirdTextProvider.tintColor = UIColor.blue
template.outerTextProvider = firstTextProvider
template.innerTextProvider = CLKTextProvider.localizableTextProvider(withStringsFileFormatKey: "STRINGFORMAT", textProviders: [secondTextProvider, thirdTextProvider])
handler(template)
} else {
handler(nil) // Fallback on earlier versions
}
default:
handler(nil)
}
}
和我的ckcomplication.strings
的内容
"STRINGFORMAT" = "%@ %@";
不会显示任何文字。我在这做错了什么?我感谢任何想法或工作实例。
这似乎是预期的行为,至少对于outerTextProvider
:
复杂性忽略了文本提供者的色调颜色。它始终将外部文本显示为白色。
它适用于innerTextProvider,至少在这里:
case .graphicCorner:
let graphicCorner = CLKComplicationTemplateGraphicCornerStackText()
let metarColor = UIColor.green
graphicCorner.outerTextProvider = CLKSimpleTextProvider(text: "EGLL")
graphicCorner.innerTextProvider = CLKSimpleTextProvider(text: "MVFR 27' ago")
graphicCorner.innerTextProvider.tintColor = metarColor ?? UIColor.white
let entry = CLKComplicationTimelineEntry(date: NSDate( as Date, complicationTemplate : graphicCorner)
timelineEntries.append(entry)
我遇到了同样的问题。我无法让CLKTextProvider.localizableTextProvider(withStringsFileFormatKey:, textProviders: )
和ckcomplication.strings
一起工作。
我最终在this Objective-C category上使用了CLKTextProvider
。
它需要很少的自定义来满足我自己的需求,但除了它似乎对我有用之外,我现在在内环中获得了多色文本。