多色复杂功能文本



我正在使用模板CLKComplicationTemplateGraphicCornerTextImage创建一个.graphicCornerClockKit复杂功能。正如 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

复杂性会忽略文本提供程序的色调颜色。它始终将外部文本显示为白色。

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相结合来工作。

我最终在CLKTextProvider上使用了这个Objective-C类别。

它几乎不需要根据我自己的需求进行定制,但除此之外,它似乎对我有用,我现在在内圈中获得了多色文本。

最新更新