比较2 UIColor

Dav*_*nte 3 uicolor ios swift

之前必须已经问过这个问题,但是我找不到合适的参考。我发现了这个问题,但这将三个数字相互比较。

我正在尝试比较2个UIColor以避免重复。每种颜色均以r,g,b,alpha表示。我形成颜色,以便可以控制数字格式。

处理该问题的合适方法是什么?

所有帮助表示赞赏。

fpg*_*503 5

如果以相同的方式创建所有颜色,则可以使用==

如果您的颜色在不同的颜色空间中,而您只想比较它们的RGBA值,请使用以下命令:

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
    }
}
Run Code Online (Sandbox Code Playgroud)

例如:

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
Run Code Online (Sandbox Code Playgroud)