我想在点击它时更改 UIButton Image

Posted

技术标签:

【中文标题】我想在点击它时更改 UIButton Image【英文标题】:I want to change UIButton Image when tapped on it 【发布时间】:2016-11-16 14:15:27 【问题描述】:

我在 CollectionViewController 的标题中有 2 个按钮。当我点击其中一个时,我正在使用 UIControlState -> .normal .selected 更改此按钮的图像。

override func viewDidLoad() 
    super.viewDidLoad()
    collectionView.delegate = self
    collectionView.dataSource = self

    engSwitchButton.setImage(#imageLiteral(resourceName: "abc"), for: .normal)
    geoSwitchButton.setImage(#imageLiteral(resourceName: "abg"), for: .normal)
    engSwitchButton.setImage(#imageLiteral(resourceName: "abc2"),for: UIControlState.selected)
    geoSwitchButton.setImage(#imageLiteral(resourceName: "abg2"), for: UIControlState.selected)


    engSwitchButton.tag = Language.english.rawInt
    geoSwitchButton.tag = Language.georgian.rawInt




@IBAction func languageSwitchTapped(_ sender: UIButton) 

    sender.isSelected = !sender.isSelected



    selectedLanguage = Language(rawInt: sender.tag)!
    collectionView.reloadData()

我想要我首先点击的按钮,当我通过点击它来改变 2d 按钮的状态时返回到 .normal 状态。

【问题讨论】:

【参考方案1】:

要在点击时更改按钮图像,您应该使用UIControlState.highlighted

所以改变:

engSwitchButton.setImage(#imageLiteral(resourceName: "abc2"),for: UIControlState.selected)
    geoSwitchButton.setImage(#imageLiteral(resourceName: "abg2"), for: UIControlState.selected)

到这里:

engSwitchButton.setImage(#imageLiteral(resourceName: "abc2"),for: UIControlState.highlighted)
    geoSwitchButton.setImage(#imageLiteral(resourceName: "abg2"), for: UIControlState.highlighted)

【讨论】:

当我使用 .highlighted 时,它只在点击时起作用。这就是我使用 .selected 的原因,因为当我点击按钮 1 时,它必须保持 .selected 状态,而当我点击按钮 2 时,我希望它变为 .selected 并且按钮 1 必须恢复为 .normal【参考方案2】:
@IBAction func yourFirstButton(_ sender: Any) 
    firstButton.setImage(UIImage(named: "yourButtonPressedImage")!, for: .normal)
    secondbutton.setImage(UIImage(named: "yourNormalImage")!, for: .normal)



在您的第二个按钮中,@IBAction 方法只需切换按钮的图像

 @IBAction func yourSecondButton(_ sender: Any) 
     secondButton.setImage(UIImage(named: "yourButtonPressedImage")!, for: .normal)
     firsBbutton.setImage(UIImage(named: "yourNormalImage")!, for: .normal)


 

【讨论】:

我现在面临的问题(正如我刚刚实现的那样)是按下按钮后将其设置为默认图像

以上是关于我想在点击它时更改 UIButton Image的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIButton 自定义 UITableViewCell:无法更改 UIImage

点击时如何更改 UIButton 的标题颜色? [复制]

UIBUTTON 和选择器视图

更改以编程方式创建的单击 UIButton 的背景图像

iphone uibutton:我想更改 UIControlStateNormal 图像

iOS:如果您长按然后释放它,UIButton 文本不会立即更改