Доступ к системе. Разрушительная красная кнопка цвета

Как получить доступ к системному красному цвету, используемому для стиля кнопки деструктивного оповещения?

Например, синий стиль по умолчанию, используемый для кнопок, доступен в Swift с помощью let systemBlueColor = view.tintColorчто соответствует UIColor(red: 0, green: 122, blue: 255, alpha: 1.0),

Кажется, что деструктивный красный цвет UIColor(red: 255, green: 59, blue: 48, alpha: 1.0) но есть ли способ получить к нему доступ таким же образом, как по умолчанию view.tintColor метод?

Я читал, что интерпретации RGB могут различаться в зависимости от устройства / операционной системы, поэтому я хотел бы получить доступ к версии цвета, независимой от устройства / операционной системы.

1 ответ

Решение

Существует недокументированный метод класса UIColor называется _systemDestructiveTintColor который вернет нужный вам цвет:

let red = UIColor.performSelector("_systemDestructiveTintColor").takeUnretainedValue()

Возвращает неуправляемый объект, который вы должны вызвать .takeUnretainedValue(), так как право собственности на цвет не было передано нашему собственному объекту.

Как и в случае любого недокументированного API, вы должны соблюдать осторожность при попытке использовать этот метод:

if UIColor.respondsToSelector("_systemDestructiveTintColor") {
    if let red = UIColor.performSelector("_systemDestructiveTintColor").takeUnretainedValue() as? UIColor {
        // use the color
    }
}

Этот и другие цвета можно найти в заголовке UIColor.

Другие вопросы по тегам