как отобразить 6 изображений в al oop на imagview - PullRequest
0 голосов
/ 01 апреля 2020

Мой код swift ниже прямо сейчас отображает 3 изображения в al oop в шутку c alterImage. То, что я хочу сделать - это отобразить 6 изображений в формате oop, как показано ниже. Проблема в том, что я не знаю, как добавить эти три изображения в приведенную ниже последовательность. Я добавил дополнительные строки к тому, что было забавно c, чтобы попытаться выяснить, как добавить image4, image5 и image6. Прямо сейчас у этого есть 4 линии.

      var backColor = UIImageView()
   let image1 = UIImage(named: "a.png")
    let image2 = UIImage(named: "b.png")
    let image3 = UIImage(named: "c.png")
    let image4 = UIImage(named: "d.png")
    let image5 = UIImage(named: "e.png")
    let image6 = UIImage(named: "f.png")

    @objc func alterImage() {

            backColor.image =
            backColor.image ==
            image1 ? image2 : backColor.image
            ==
            image2 ? image3 :  image1



        perform(#selector(alterImage), with: self, afterDelay: 1)
    }

enter image description here

1 Ответ

0 голосов
/ 01 апреля 2020

Возможно, вы пытаетесь просматривать изображения в режиме backColor последовательно, каждую секунду. Я бы рекомендовал избегать используемого в настоящее время подхода, вместо этого вы можете сгруппировать изображения в массив. Пример:

var backColor = UIImageView()
let image1 = UIImage(named: "a.png")
let image2 = UIImage(named: "b.png")
let image3 = UIImage(named: "c.png")
let image4 = UIImage(named: "d.png")
let image5 = UIImage(named: "e.png")
let image6 = UIImage(named: "f.png")
let images = [image1, image2, image3, image4, image5, image6]
var currentImageIndex = 0

@objc func alterImage() {
    backColor.image = images[currentImageIndex]
    currentImageIndex = currentImageIndex == images.count - 1 ? 0 : currentImageIndex + 1
    perform(#selector(alterImage), with: self, afterDelay: 1)
}

В этот момент при просмотре последнего изображения оно вернется к первому.

Примечание: если вы делаете это внутри UIViewController, вы может потребоваться объявить images как переменную lazy:

lazy var images: [UIImage?] = { [image1, image2, image3, image4, image5, image6] }()

Кроме того, чтобы показать, как это может быть сделано при текущем подходе (и снова я рекомендую избежать этого), это можно сделать как:

// set the first image by default:
backColor.image = image1
@objc func alterImage() {
    backColor.image =
        backColor.image == image1 ? image2 :
        backColor.image == image2 ? image3 :
        backColor.image == image3 ? image4 :
        backColor.image == image4 ? image5 :
        backColor.image == image5 ? image6 : image1

    perform(#selector(alterImage), with: self, afterDelay: 1)
}
...