单击后更改UIImage

时间:2018-09-20 16:29:09

标签: swift

我的项目中有13张名为150px;1的图像。我希望13在单击UIImageView时从图像1更改为2,然后是3,然后是4,依此类推。

单击UIButton时的当前代码:

UIButton

因此,我知道我需要将值存储在变量中,并将其初始设置为1。每次单击@IBAction func button(sender: Any) { cardImage.image = UIImage(named: 1) } 时,请将值添加1。该值需要以某种方式链接到UIButton。我该如何实现?

2 个答案:

答案 0 :(得分:1)

因此,在视图控制器中创建一个文件名数组,并在该数组中创建一个索引:

class ViewController: UIViewController {

    lazy var filenames: [String] = {
        return Array(1...13).map {String($0)}
    }()

    var filenameIndex = 0

然后编写一个函数以加载一张图像并增加索引:

    func fetchImage() -> UIImage? {
         let result = UIImage(named: filenames[filenameIndex])
         filenameIndex = (filenameIndex + 1) % filenames.count
         return result
    }

(您还可以使用Yury的方法来管理整数索引并将其转换为文件名,但是我的方法将使您可以管理循环显示任何图像文件名的数组,无论它们是否为序号。)

答案 1 :(得分:0)

您需要将当前的图像编号值存储在变量中,并在按下按钮时增加。

let imagesCount: Int = 13
var currentImageNumber: Int = 1

@IBAction func didPressButton(sender: Any) {
    cardImage.image = UIImage(named: "\(currentImageNumber)")
    currentImageNumber += 1
    if currentImageNumber > imagesCount {
        currentImageNumber = 1
    }
}

或者您可以使用没有if条件的较短版本。

let imagesCount: Int = 13
var currentImageNumber: Int = 0

@IBAction func didPressButton(sender: Any) {
    cardImage.image = UIImage(named: "\(currentImageNumber + 1)")
    currentImageNumber += 1
    currentImageNumber %= imagesCount
}