【问题标题】:Can't change UIbutton image for different state无法更改不同状态的 UIbutton 图像
【发布时间】:2017-04-22 03:03:59
【问题描述】:

我想为不同的状态更改 UIButton 的图像。为此,我正在使用:

btn.setImage(UIImage(named: "blabla"), for .normal)

btn.setImage(UIImage(named: blabla2), for .disabled)

这只会让一些看起来变暗。

我做错了什么?我只是想让我的按钮在不同状态下的外观相同,如何?

(我的按钮类型 - .system)。

【问题讨论】:

  • 无法更改系统类型按钮图片,只有自定义按钮可以更改图片
  • 谢谢你们。我找到了解决方案。如何关闭问题?这是我的第一个问题)
  • 您可以关闭或删除它,方法是选择问题下的选项之一(共享编辑关闭删除标志)。

标签: ios swift uibutton uiimage state


【解决方案1】:

对于使用自定义按钮仍然存在此问题的人(当前为 Xcode 10.0),我发现我可以更改文本和/或图像,而不是:

myButton.setTitle("Hi", for: [.normal])

我用过这个:

myButton.setTitle("Hi", for: []) //remove specific states

我不知道为什么.normal 对我不起作用,即使该按钮确实已启用。但也许这会让别人头疼!

【讨论】:

【解决方案2】:
    private let button1: UIButton = {
        let button = UIButton(type: .custom)
        button.setImage(UIImage(named:"firstButtonNormalStateImage"), for: .normal)
        button.setImagesetImage(UIImage(named:"firstButtonSelectedStateImage"), for: .selected)
        return button
    }()

    private let button2: UIButton = {
        let button = UIButton(type: .custom)
        button.setImage(UIImage(named:"secondButtonNormalStateImage"), for: .normal)
        button.setImage(UIImage(named:"secondButtonSelectedStateImage"), for: .selected)
        return button
    }()

    // implement for example in viewDidLoad()

    button1.addTarget(self, action: #selector(firstButtonDidTap), for: .touchUpInside)
    button2.addTarget(self, action: #selector(secondButtonDidTap), for: .touchUpInside)

// 触发动作

    @objc func firstButtonDidTap() {
        button1.isSelected = true
        button2.isSelected = false
    }

    @objc func secondButtonDidTap() {
        button2.isSelected = true
        button1.isSelected = false
    }

【讨论】:

    【解决方案3】:

    您也可以通过 StoryBoard 轻松完成此操作。 选择按钮,进入身份检查员并执行以下操作:- 首先将 buttonType 设置为 custom 而不是 system。 其次选择状态配置让我们说默认并在“图像”属性中给出imageName,同样选择其他状态配置(突出显示,禁用,选择等)并将图像设置为你要求的。 然后在后面的代码中你只需要控制和设置按钮的状态,相应的图像就会显示给你。

    【讨论】:

      【解决方案4】:

      这对我有帮助(swift 3.0)

      btn.setImage(UIImage(named:"yourFriend")?.withRenderingMode(.alwaysOriginal), for: .normal)
      
      btn.setImage(UIImage(named:"yourFriend")?.withRenderingMode(.alwaysOriginal), for: .disabled)
      

      【讨论】:

        【解决方案5】:

        用于显示禁用按钮设置图像

        let btn  = UIButton(type: .Custom)
        btn.setImage(UIImage(named: blabla2), for .disabled)
        

        然后

        btn.enabled = false // to display Disable image
        btn.enabled = true // to display Normal image
        

        【讨论】:

          【解决方案6】:

          您只需为状态设置一个。如果你没有为不同的状态设置另一个图像。它在所有状态下看起来都一样。

          button.setImage(image, forState: .Normal)
          

          How to change UIButton image in Swift

          【讨论】:

          • 我写了关于它的问题描述。它不起作用。无论如何,尝试一下)我已经找到了解决方案!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-23
          • 2012-04-17
          相关资源
          最近更新 更多