【问题标题】:how do i change an image if i click on a button in Swift? [duplicate]如果我单击 Swift 中的按钮,如何更改图像? [复制]
【发布时间】:2017-07-06 02:39:13
【问题描述】:

我是 swift 新手。我有一个按钮和 3 个保存在数组中的图像。我想要的是通过单击按钮来更改图像。

let circleArray = ["circle-gray-big","circle-green-big","circle-red-big"]
@IBAction func carbsButton(_ sender: Any) {

}

【问题讨论】:

  • 你想在哪里设置图片,按钮还是图片视图?
  • @Edk ,通过在下面看到您的 cmets,您是否尝试过我的代码??

标签: ios arrays swift


【解决方案1】:

Swift 3.0

类的全局声明,

let circleArray = ["circle-gray-big","circle-green-big","circle-red-big"]
var index = 0

UIImageView

@IBOutlet var imageView: UIImageView! //Global

@IBAction func carbsButton(_ sender: Any) {

 self.index = (self.index >= self.circleArray.count-1) ? 0 : self.index+1
 self.imageView.image = UIImage(named:circleArray[index])
}

UIButton

carbsButton(_ sender: Any) 中的Any 更改为carbsButton(_ sender: UIButton)。完成下面的代码后,

@IBAction func carbsButton(_ sender: UIButton) {
  self.index = (self.index >= self.circleArray.count-1) ? 0 : self.index+1
   sender.setImage(UIImage(named:circleArray[index]), for: .normal)//Button
}

UIImageView and UIButton:

let circleArray = ["circle-gray-big","circle-green-big","circle-red-big"]
var index = 0

@IBOutlet var imageView: UIImageView!    
@IBAction func carbsButton(_ sender: UIButton) {

    self.index = (self.index >= self.circleArray.count-1) ? 0 : self.index+1

    self.imageView.image = UIImage(named:circleArray[index]) //imageView
    sender.setImage(UIImage(named:circleArray[index]), for: .normal)//Button
}

样本输出:

sender.setBackgroundImage(UIImage(named:circleArray[index]), for: .normal)

【讨论】:

  • 非常感谢,我唯一拥有的是图像和按钮的图像不同。所以我将有两个数组。当我点击按钮时,按钮应该和图像一样改变,但那些将是完全不同的图像。
  • @EdK,不客气,。如果您需要从两个中更改图像,则使用这种方式,let circleArray = Array1+Array2 就足够了。
【解决方案2】:
let image = UIImage(named: circleArray[0]) // circleArray[1], circleArray[2]

在你的动作函数中设置按钮图片

button.setImage(image, for: .normal)

【讨论】:

  • 谢谢。单击按钮时,我想更改按钮图像。以及图像视图。基本上一键更改按钮和图像视图。我能够进行图像视图,但如何同时更改按钮。
  • @IBAction func carbsButton(_ sender: Any) { if carbsCircle == 0 { car​​bsImage.image = UIImage(named: "circle-gray-big") carbsCircle = carbsCircle + 1 } else if carbsCircle == 1 { car​​bsImage.image = UIImage(named: "circle-green-big") carbsCircle = carbsCircle + 1 } else if carbsCircle == 2 { car​​bsImage.image = UIImage(named: "circle-red-big") carbsCircle = carbsCircle - 2 }
【解决方案3】:
button.setImage(UIImage(named: circleArray[0]),forState:Normal)

您可以为按钮的各种状态(例如正常、突出显示、选中)设置各种图像

这是您正在寻找的东西吗?如果您正在寻找其他内容,请详细说明。

【讨论】:

  • 谢谢。单击按钮时,我想更改按钮图像。以及图像视图。基本上一键更改按钮和图像视图。我能够进行图像视图,但如何同时更改按钮。
  • @IBAction func carbsButton(_ sender: Any) { if carbsCircle == 0 { car​​bsImage.image = UIImage(named: "circle-gray-big") carbsCircle = carbsCircle + 1 } else if carbsCircle == 1 { car​​bsImage.image = UIImage(named: "circle-green-big") carbsCircle = carbsCircle + 1 } else if carbsCircle == 2 { car​​bsImage.image = UIImage(named: "circle-red-big") carbsCircle = carbsCircle - 2 }
  • 谢谢。单击按钮时,我想更改按钮图像。以及图像视图。基本上一键更改按钮和图像视图。我能够进行图像视图,但如何同时更改按钮。
【解决方案4】:

首先你需要给 UIButton 标签

    @IBOutlet var btn: UIButton!
    let circleArray = ["circle-gray-big","circle-green-big","circle-red-big"]

    override func viewDidLoad() {
            super.viewDidLoad()
            see.btn.tag = 0
    }

    @IBAction func carbsButton(_ sender: Any) {
            button.setImage(UIImage(named: circleArray[btn.tag % 3]),forState:Normal)
            btn.tag = ban.tag + 1          
    }

这样做你一定会得到你想要的。如果它解决了问题,请点击向上箭头。

【讨论】:

    猜你喜欢
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多