Как установить белый цвет текста в модульной большой сложности? - PullRequest
0 голосов
/ 20 февраля 2019

Я не могу установить белый цвет текста для body1TextProvider и body2TextProvider .Доступен только серый цвет.

Мой код:

let modularLarge = CLKComplicationTemplateModularLargeStandardBody()
modularLarge.headerTextProvider = CLKSimpleTextProvider(text: dateText.capitalized)
modularLarge.headerTextProvider.tintColor = self.tintColor

modularLarge.body1TextProvider = CLKSimpleTextProvider(text: timeText)
modularLarge.body2TextProvider = CLKSimpleTextProvider(text: "00:00")

modularLarge.body1TextProvider.tintColor = self.whiteColor
modularLarge.body2TextProvider?.tintColor = self.whiteColor

handler(CLKComplicationTimelineEntry(date: Date(),complicationTemplate: modularLarge))

enter image description here

1 Ответ

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

Мне кажется, что есть или ошибка, или какой-то недокументированный нюанс при применении tintColor к CLKSimpleTextProvider.

Согласно документации на CLKSimpleTextProvider * tintColor:

tintColor

Цвет оттенка, используемый для текста.

Обсуждение

На циферблатах, которыеподдержка пользовательских цветов, этот цвет применяется к тексту в текстовом провайдере.

Ref: https://developer.apple.com/documentation/clockkit/clktextprovider/1627929-tintcolor

Сейчас ... после выбора многоцветного модульногона циферблате, мы можем заметить, что headerTextProvider.tintColor работает так, как задокументировано, и применяет указанные UIColor.
, но ...
body1TextProvider.tintColor и body2TextProvider?.tintColor не работает так, как задокументировано, так как не применяетсяUIColor.
показывает нам, что задокументированное поведение не применяется единообразно для всех textProvider с.


Однако ...

Я заметил, что если выустановите CLKComplicationTemplate tintColor на что-то, затем body1TextProvider и body2TextProvider станут белыми, даже если вы пытаетесь установить другой цвет, например синий / желтый / и т. д.

К счастью, вы хотите, чтобы он был белым, поэтому просто modularLarge.tintColor = .red (или UIColor в соответствии с вашей темой) вы получите тексты вашего белого тела.


Резюме:

Нет необходимости делатьследующее (удалить / сохранить, не имеет значения):

modularLarge.body1TextProvider.tintColor = self.whiteColor
modularLarge.body2TextProvider?.tintColor = self.whiteColor

Вместо этого сделайте это перед вызовом handler:

modularLarge.tintColor = UIColor.red

Решение:

let modularLarge = CLKComplicationTemplateModularLargeStandardBody()    
modularLarge.tintColor = .red //do this

modularLarge.headerTextProvider = CLKSimpleTextProvider(text: dateText.capitalized)
modularLarge.headerTextProvider.tintColor = self.tintColor

modularLarge.body1TextProvider = CLKSimpleTextProvider(text: timeText)
modularLarge.body2TextProvider = CLKSimpleTextProvider(text: "00:00")

handler(CLKComplicationTimelineEntry(date: Date(),complicationTemplate: modularLarge))
...