Swift - Animate图像序列

时间:2018-03-30 14:50:24

标签: swift image animation

我有一个想要在Swift中制作动画的图像列表。我试图找到最好的方法 - 但我仍然有一些问题。

我现在为图像列表设置动画的方式是:

var animatedImage = UIImageView()
var velkomstImgList = [UIImage]()

override func viewDidAppear(_ animated: Bool) {
    animatedImage.frame = CGRect(x: 0, y: 0, width: self.scrollView.frame.width, height: 200)
    animatedImage.contentMode = .scaleAspectFit
    scrollView.addSubview(animatedImage)
    animateVelkomst()
}

func animateVelkomst() {
    for i in 0...150 {
        velkomstImgList.append(UIImage(named:"Velkomst_\(i).png")!)
        if i == 150 {
            self.animatedImage.animationImages = self.velkomstImgList
            self.animatedImage.animationDuration = 5.0
            self.animatedImage.startAnimating()
        }
    }
}

它工作正常,动画按预期显示。但是开始的for循环需要相当长的时间,我不认为这是显示动画的正确方法。关于如何设置图像序列动画的任何建议?

1 个答案:

答案 0 :(得分:0)

加载速度很慢,因为您尝试同时加载150张图像。您可以在需要时使用计时器并加载图像。

let imageCount = 150
var frameIndex = 0
var timer: Timer?

func startAnimation() {
    frameIndex = 0
    let deltaTime = 5.0 / Double(imageCount)
    timer = Timer(timeInterval: deltaTime, target: self, selector: #selector(updateFrame), userInfo: nil, repeats: true)
}

func stopAnimation() {
    timer?.invalidate()
    timer = nil
}

@objc func updateFrame(_ timer: Timer) {
    self.animatedImage.image = UIImage(named:"Velkomst_\(frameIndex).png")

    frameIndex += 1
    if frameIndex > imageCount {
        frameIndex = 0
    }
}