Изменение UIImage после клика - PullRequest
0 голосов
/ 20 сентября 2018

В моем проекте 13 изображений с именами от 1 до 13.Я бы хотел, чтобы UIImageView сменил изображение с 1 на 2, затем на 3, затем на 4 и т. Д. При нажатии UIButton.

Мой текущий код при нажатии на UIButton:

@IBAction func button(sender: Any) {
    cardImage.image = UIImage(named: 1)
}

Итак, я знаю, что мне нужно сохранить значение в переменной и изначально установить значение 1. Добавлять 1 к значению каждый раз, когда я нажимаю UIButton.Это значение должно быть как-то связано с cardImage.Image = UIImage.Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Итак, создайте массив ваших имен файлов в вашем контроллере представления и индекс в этот массив:

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
    }

(Вы также можете использовать подход Юрия по управлению целочисленным индексом и преобразованию его в имя файла, но мой подход позволит вам управлять циклически перемещаться по любому массиву имен файлов изображений, независимо от того, являются они последовательными числами или нет.)

0 голосов
/ 20 сентября 2018

Вам необходимо сохранить текущее значение номера изображения в переменной и увеличить его при нажатии кнопки.

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...