Swift - 动画图像序列

标签 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 循环需要相当长的时间,我认为这不是显示动画的正确方法。关于如何为图像序列设置动画有什么建议吗?

最佳答案

加载速度很慢,因为您尝试同时加载 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
    }
}

关于Swift - 动画图像序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49576566/

相关文章:

swift - 合成视频和音频 - 视频的音频消失了

ios - Firebase 观察者值影响所有 Collection View 单元格

ios - Swift - SWRevealViewController 菜单放置在状态栏之后

css - :hover above img doesnt work properly with display block under IE & Opera

java - 更新以 mysql blob 格式保存的图像

javascript - Jquery动画进入页面

c++ - 使用Qt的QTimer函数在OpenGl中制作动画

css - 在 css 中创建视差固定背景图像的更有效方法

swift - 使用组合的自定义更改运算符

java - 调整图像大小以适合框架