проблема с анимацией изображения в viewDidAppear (), любой совет? - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь создать анимацию, которая прокручивает серию изображений. Следующий код не имеет анимации, и на экране появляется только последнее изображение серии. Как мне исправить эту анимацию?

override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(true)
        imageSelection(score: 50)
    }
func imageSelection(score: Int) {
        var myScore = score
        if score < 10 {
            myScore = 1
        }
        else if score < 20 && score > 10 {
            myScore = 2
        }
        else if score < 30 && score > 20 {
            myScore = 3
        }
        else if score < 40 && score > 30 {
            myScore = 4
        }
        else if score < 50 && score > 40 {
            myScore = 5
        }
        else if score == 50 {
            myScore = 6
        }
        for i in 1...myScore{
            UIView.animate(withDuration: 0.5) {
                self.cookieImage.image = UIImage(named: "rewardsCookie\(i)")
                self.view.layoutIfNeeded()
            }
        }
    }

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Как сказал Мэтт, вы не анимируете никаких анимируемых свойств. Вы можете достичь того, чего хотите, используя анимацию слоя. Замените ваш for l oop следующим кодом.

    var images = [CGImage]()
    for i in 1...myScore{
        images.append(UIImage(named: "rewardsCookie\(i)")!.cgImage!)
    }
    let animation = CAKeyframeAnimation(keyPath: "contents")
    animation.values = images
    let delay = 3.0 // in case you need to delay your animation
    animation.duration = 5.0 // change to the total duration (ex: 0.5 * myScore)
    animation.beginTime = CACurrentMediaTime() + delay
    self.cookieImage.layer.add(animation, forKey: nil)

Обратите внимание, что для анимации слоя вы на самом деле не видите UIImageView, а кэшируете его версию. Это удаляется с экрана, как только анимация завершается, и оригинальный слой снова показывает себя. Таким образом, вы увидите изображение, которое было видно на cookieImageView до начала анимации. Чтобы сохранить последнее изображение, добавьте следующую строку после кода выше

    self.cookieImage.image = UIImage(named: "rewardsCookie\(myScore)")

Для получения дополнительной информации go - Документация Apple .

1 голос
/ 31 марта 2020

Вы пытаетесь сделать анимацию "перевернутой книги", где вы переворачиваете последовательность изображений? Самый простой способ сделать это с помощью анимации UIImageView. См. Ссылку на класс UIImageView в XCode для получения дополнительной информации (см. Раздел, озаглавленный «Анимация последовательности изображений».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...