多色复杂文本

问题描述 投票:3回答:2

我正在使用模板.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" = "%@ %@";

不会显示任何文字。我在这做错了什么?我感谢任何想法或工作实例。

swift clockkit watch-os-5
2个回答
1
投票

这似乎是预期的行为,至少对于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)

Screenshot


0
投票

我遇到了同样的问题。我无法让CLKTextProvider.localizableTextProvider(withStringsFileFormatKey:, textProviders: )ckcomplication.strings一起工作。

我最终在this Objective-C category上使用了CLKTextProvider

它需要很少的自定义来满足我自己的需求,但除了它似乎对我有用之外,我现在在内环中获得了多色文本。

© www.soinside.com 2019 - 2024. All rights reserved.