【问题标题】:UIButton current colour checkUIButton 当前颜色检查
【发布时间】:2021-09-13 13:37:53
【问题描述】:

我想检查按钮的当前颜色,如果是蓝色我想执行某个操作。

但是我已经将它与这种方式进行了比较,它总是失败。即使在情节提要中背景颜色设置为系统蓝色。

如何查看颜色?

我做了什么:

    @IBAction func myBlueButton(_ sender: UIButton) {
    if sender.backgroundColor == .systemBlue{
        print("yeah its equal")
    }
}

【问题讨论】:

  • 通常情况下,您不需要检查按钮的颜色。请检查您的 model。在您的应用中,蓝色按钮代表什么?
  • @Sweeper 好吧,我是 swift 新手,我认为检查颜色会更容易。检查颜色是一种不好的做法吗?在我的应用程序中,蓝色 = 按钮打开,灰色 = 按钮关闭。基于此,当蓝色时,我发送一个不同的 api 调用,当它的灰色时,它与蓝色不同

标签: ios swift uibutton storyboard


【解决方案1】:

作为一般规则,视图对象不应保存状态。

您可以从中提炼出您的问题

“我想检查按钮的当前颜色,如果是蓝色我想执行某个操作”

收件人:

“我想检查视图对象的状态并根据该状态执行特定操作。”

不要那样做。

向您的模型添加一个条目,告诉您有关功能状态的信息。不是“按钮为蓝色”而是“我们处于编辑模式”(或“按钮为蓝色”意味着对您应用的业务逻辑而言。)

(让您的业务逻辑依赖于应用的视觉状态是个坏主意。

假设您编写应用程序来检查按钮颜色并据此决定应用程序状态。一年后,您决定对您的应用程序进行改造,并更新您的按钮颜色以使用不同的颜色主题。现在您的活动按钮颜色为淡紫色,非活动按钮颜色为部分透明黑色。您进行了更改,然后由于某种奇怪的原因,您的 API 调用不再起作用。在 waaaaayyy 太多头疼之后,您羞怯地意识到您的业务逻辑正在查看您的视图样式以确定状态。当您更改视图的样式时,它会破坏您的业务逻辑。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 2011-09-29
    • 2015-05-18
    相关资源
    最近更新 更多