如何在每次按下时更改UIButton的图像

如何在每次按下时更改UIButton的图像

问题描述:

如何在每次按下按钮时将UIButton更改图像从A更改为B并将B再更改为A?如何在每次按下时更改UIButton的图像

不是.normal.highlighted,但永久。 我已经试过.highlighted方法,因为我无法找到永久的代码,这里是我的代码:

func ChangeButton() { 
    Button.setImage(A, for: .normal) 
    Button.setImage(B, for: .highlighted) 
+0

你到目前为止尝试过什么? – mat

+0

我试过.highlighted方法,因为我找不到永久代码,下面是我的代码: func ChangeButton(){ Button.setImage(A,for:.normal) Button.setImage(B,for :.highlighted) – Shahin

+0

请参阅:https://stackoverflow.com/questions/44938919/how-do-i-change-an-image-if-i-click-on-a-button-in-swift/44939698# 44939698 –

感谢您从对方的回答中提到setBackgroundImage泽维尔L.。 试试下面的代码:

import UIKit 
class ViewController: UIViewController { 

    @IBOutlet var button: UIButton! 
    var buttonActive = false 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     button.setBackgroundImage(UIImage(named: "apple"), for: .normal) 
    } 

    @IBAction func buttonPressed() { 
     if buttonActive { 
      button.setBackgroundImage(UIImage(named: "apple"), for: .normal) 
     } else { 
      button.setBackgroundImage(UIImage(named: "pineapple"), for: .normal) 
     } 
     buttonActive = !buttonActive 
    } 
} 

和你的故事板应该看起来像: Storyboard

注:在堆栈溢出时,您应该在询问之前执行一些操作。尝试包括你尝试过的一些代码。

+0

它的工作,感谢一百万 – Shahin

我建议更改backgroundImage,因为它会自动缩放,并且前面的按钮文本不会被覆盖。

如果它是一个自定义按钮,它的初始化中:

self.addTarget(self, action: #selector(*yourfunctoswitchimages*), for: .touchUpInside) 

...然后是yourfunctoswitchimages可以只检查当前的背景图像是什么,并相应地打开它。


如果它不是自定义按钮,请在viewDidLoad中添加一个目标。这里有很多示例代码。

在您的viewDidLoad()

yourButt.addTarget(self, action: #selector(switcheroo), for: .touchUpInside) 

另一个FUNC在您的视图控制器:

func switcheroo() 
{ 
    if yourButt.currentBackgroundImage == image1 
    { 
     yourButt.setBackgroundImage(image2), for: .normal) 
    } 
    else { // ...set image to image1 } 
} 

yourButt是当然的视图控制器的特性,这样,它是在viewDidLoad中访问( )以及其中的其他funcs。