Мне кажется, что есть или ошибка, или какой-то недокументированный нюанс при применении 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))