Многоцветный сложный текст - PullRequest
0 голосов
/ 12 октября 2018

Я создаю .graphicCorner услугу ClockKit, используя шаблон CLKComplicationTemplateGraphicCornerTextImage.Как уже упоминалось в Tech Talk Разработка осложнений для 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" = "%@ %@";

Текст не будет отображаться.Что я здесь не так делаю?Я ценю любую идею или рабочие примеры.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Я столкнулся с той же проблемой.Я не смог заставить работать CLKTextProvider.localizableTextProvider(withStringsFileFormatKey:, textProviders: ) в сочетании с ckcomplication.strings.

В итоге я использовал эту категорию Objective-C на CLKTextProvider.

Этомне нужно было немного подгонять под свои нужды, но, кроме этого, мне кажется, что теперь я получаю разноцветный текст во внутреннем кольце.

0 голосов
/ 21 января 2019

Кажется, что это ожидаемое поведение, по крайней мере, для 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)

Скриншот

...