Понимание SystemColors для темного режима в старых iOS - PullRequest
0 голосов
/ 20 октября 2019

Редактировать: Основываясь на разговорах ниже, я запутался в том, что не все системные цвета совместимы со старыми операционными системами, в моем случае метка и цвета systemBackground - только iOS13, что требует отступления. Это имеет смысл сейчас.

У меня есть приложение, которое поддерживает iOS11, но я хочу предоставить Dark Mode для пользователей с iOS13.

В Xcode 11 / iOS13 вы можете указать системные цвета для Dark Mode с отступлением для более старых операционных систем. системы следующим образом ...

if #available(iOS 13.0, *) {
    view.textColor = UIColor.label
} else {
    view.textColor = UIColor.black
}

Если я пытаюсь использовать цвет без отступления для старых систем, я получаю ошибку, которая ... вроде как имеет смысл, я говорю вроде как, потому что в документации говорится, чтоsystem colors (StandarColors) поддерживаются в iOS 7.0+.

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

1- Что происходит, когда вы используете новые системные цвета непосредственно из Инспектора атрибутов, когда вы не получаете ошибки при их выборе?

2- Что увидит пользователь с iOS11посмотреть, где label цвет был непосредственно выбран из инспектора атрибутов?

Спасибо

1 Ответ

2 голосов
/ 20 октября 2019

Если вы используете новые системные цвета в коде (кроме systemOrange, как правильно указал Рмадди), вы должны проверить доступность iOS 13, потому что API раньше не было.

ОднакоКогда вы выбираете такой цвет в Интерфейсном Разработчике, он будет работать автоматически в старых версиях iOS. Вот что Interface Builder вставляет в вашу раскадровку в этом случае:

<color key="backgroundColor" systemColor="systemOrangeColor" red="1" green="0.58431372550000005" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>

Как вы можете видеть, запасной вариант добавляется в случае, если атрибут systemColor не понят.

Если выЕсли вам нужно решение, совместимое с iOS 11, которое не требует @available проверок каждый раз, вы можете использовать Цветовые активы, которые вы определили в каталоге активов.

Я также создал помощник это именно то.

...