Comparando 2 UIColor (s)

Esto debe haberse preguntado antes, pero no puedo encontrar una reference adecuada. Encontré esta pregunta , pero eso compara tres numbers entre sí.

Estoy tratando de comparar 2 UIColor (s) para evitar la duplicación. Cada color se hace reference en r, g, b, alfa. Formo los colors para que pueda controlar el formatting del número.

¿Cuál sería la forma adecuada de manejar esto?

Toda la ayuda apreciada.

Si está creando todos los colors de la misma manera que puede usar == .

Si sus colors están en diferentes espacios de color y solo quiere comparar su valor RGBA use lo siguiente:

 extension UIColor { func equals(_ rhs: UIColor) -> Bool { var lhsR: CGFloat = 0 var lhsG: CGFloat = 0 var lhsB: CGFloat = 0 var lhsA: CGFloat = 0 self.getRed(&lhsR, green: &lhsG, blue: &lhsB, alpha: &lhsA) var rhsR: CGFloat = 0 var rhsG: CGFloat = 0 var rhsB: CGFloat = 0 var rhsA: CGFloat = 0 rhs.getRed(&rhsR, green: &rhsG, blue: &rhsB, alpha: &rhsA) return lhsR == rhsR && lhsG == rhsG && lhsB == rhsB && lhsA == rhsA } } 

Por ejemplo:

 let white1 = UIColor.white let white2 = UIColor(colorLiteralRed: 1, green: 1, blue: 1, alpha: 1) white1 == white2 //false white1.cgColor == white2.cgColor //false white1.equals(white2) //true 

Si inicializa como UIColor, debería poder comparar fácilmente los colors entre sí:

 import UIKit let myFirstColor = UIColor.networking let mySecondColor = UIColor.networking let myThirdColor = UIColor(colorLiteralRed: 1.0, green: 0.0, blue: 0.0, alpha: 1.0) let iosWhite = UIColor.white let myWhite = UIColor(white: 1.0, alpha: 1.0) myFirstColor == mySecondColor //True myFirstColor == myThirdColor //True iosWhite == myWhite // True 

De los comentarios, hay casos de borde. Creo que todos son gray , black , white y clear . Para compensar, puedes crear tus propios grays y compararlos con ellos:

 let myOtherWhite = UIColor(colorLiteralRed: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) 

que no es igual a UIColor.white

Dicho esto, es fácil encontrar las cajas de borde en el patio de recreo: introduzca la descripción de la imagen aquí