Как я могу анимировать серию изображений в SwiftUI? - PullRequest
0 голосов
/ 18 июня 2020

Я новичок в SwiftUI и разработке iOS (я начал изучать 2 дня go). До этого делал Android приложений. Я изучил некоторые основы, но не могу понять, как анимировать несколько изображений. Мне нужно отобразить серию изображений с задержкой 1,2 секунды, прежде чем изменять их в кадре.

Я нашел здесь код, но они используют UIImage, который является старой структурой, и анимацию нельзя остановить.

import SwiftUI

struct SplashScreen: UIViewRepresentable {
 let imageSize: CGSize
 let imageNames: [String]
 let duration: Double

 func makeUIView(context: Self.Context) -> UIView {
    let containerView = UIView(frame: CGRect(x: 0, y: 0
        , width: imageSize.width, height: imageSize.height))

    let animationImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: imageSize.width, height: imageSize.height))

    animationImageView.clipsToBounds = true
    animationImageView.layer.cornerRadius = 5
    animationImageView.autoresizesSubviews = true
    animationImageView.animationRepeatCount = 3
    animationImageView.contentMode = UIView.ContentMode.scaleAspectFill

    var images = [UIImage]()
    imageNames.forEach { imageName in
        if let img = UIImage(named: imageName) {
            images.append(img)
        }
    }

    animationImageView.image = UIImage.animatedImage(with: images, duration: duration)
    animationImageView.image = animationImageView.animationImages?.last!

    containerView.addSubview(animationImageView)

    return containerView
}

 func updateUIView(_ uiView: UIView, context: UIViewRepresentableContext<SplashScreen>) {

 }
}

Этот код от Хулио Бейлона.

Мне не удалось найти ни одного руководства, в котором показано, как это сделать в SwiftUI.

** 1. Анимируйте изображения 3 раза.

В конце запустить другой ViewController без возможности возврата. (Я думаю о занятиях Android, но не знаю, насколько это помогает) **
...