Как сравнить три цвета в SwiftUI

У меня есть три цвета, и я хочу их сравнить. Должен ли я сделать Color совместимым с протоколом Equatable?

Код:

if Color.red == Color.green == Color.blue  {
   // do something
}

person sriram hegde    schedule 02.07.2020    source источник
comment
Я не вижу особого смысла в этом снимке, не могли бы вы дать больше контекста?   -  person Asperi    schedule 02.07.2020
comment
извините, это была ошибка редактирования   -  person sriram hegde    schedule 02.07.2020
comment
Я добавил двойное Равно ко второму   -  person sriram hegde    schedule 02.07.2020
comment
Вы не можете (без взлома) извлечь значения RGB из Color для сравнения, как вы могли бы с UIColor. Я бы также сказал, что если вы чувствуете, что вам нужно это сделать, у вас может быть более серьезная проблема с дизайном.   -  person New Dev    schedule 02.07.2020
comment
У меня нет проблем с дизайном У меня есть игра, в которой мне нужно сравнить цвета карточек   -  person sriram hegde    schedule 02.07.2020
comment
Если вы разрабатываете для swiftui, вам следует сравнивать данные, из которых создается экземпляр Color, а не сам экземпляр Color.   -  person New Dev    schedule 02.07.2020
comment
Хорошо, спасибо, так что следует ли мне использовать перечисление с цветом с корпусом красный, зеленый, синий в модели?   -  person sriram hegde    schedule 02.07.2020
comment
Зависит от ваших потребностей. Ваши данные также могут быть компонентами rgb, но если у вас всего 3 типа цветов, перечисление тоже может работать   -  person New Dev    schedule 02.07.2020


Ответы (1)


Я действительно не понимаю, чего вы хотите достичь, но вы можете сравнить их, как

        let colorr = UIColor(red: 122/255, green: 100/255, blue: 180/255, alpha: 1.0)
        let rgbColorr = colorr.cgColor
        let rgbColorrs = rgbColorr.components

Этот rgbColorrs печатает и массив, как [0.47843137254901963, 0.39215686274509803, 0.7058823529411765, 1.0], как [red,green,blue,alpha]

if rgbColorrs[0] == rgbColors[1] == rgbColors[2]{
  //....
}

Или если вы хотите сравнить равенство

 if UIColor.red.isEqual(UIColor.green.isEqual(UIColor.blue)){
        ...
    }
person Omer Tekbiyik    schedule 02.07.2020
comment
Будет ли это работать и для Color, а не только для UIColor? - person sriram hegde; 02.07.2020