如何在 SwiftUI 中比较三种颜色

Posted

技术标签:

【中文标题】如何在 SwiftUI 中比较三种颜色【英文标题】:How to compare three Color in SwiftUI 【发布时间】:2020-07-02 13:51:25 【问题描述】:

我有三种颜色,我想比较它们。我应该让 Color 符合 Equatable 协议吗?

代码:

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

【问题讨论】:

我认为该快照没有多大意义,您能提供更多上下文吗? 抱歉编辑错误 我在第二个中添加了双 Equals 您不能 (without a hack) 从 Color 中提取 RGB 值以便进行比较,就像使用 UIColor 一样。我还要说,如果您觉得需要这样做,您可能会遇到更大的设计问题 取决于您的需求。您的数据也可以是 rgb 组件,但如果您只有 3 种颜色,枚举也可以工作 【参考方案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))
        ...
    

【讨论】:

这是否也适用于 Color 而不仅仅是 UIColor?

以上是关于如何在 SwiftUI 中比较三种颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中更改表单的背景颜色?

如何在 SwiftUI 中更改分段选取器的颜色外观?

SwiftUI - 如何在文本视图中更改自定义 SF 符号的颜色?

SwiftUI:如何将初始化程序分配给特定对象?

如何在 SwiftUI 应用程序生命周期中更改特定视图的状态栏颜色?

如何在 SwiftUI 中从颜色中获取 RGB 分量