swift - 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 - Swift-动画图像序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49576566/

相关文章:

ios - 在Swift 3中将正则表达式与管道分隔符配合使用以过滤出匹配项

python - 如何将圆形图像裁剪为内切正方形,然后裁剪为内切圆,最后裁剪为内切正方形?

android - Android图片推文

django - Django:缓存图像

java - 动画一条从一点到一点的线

ios - 当我的应用程序未通过电话打开时,我可以请求服务器吗?

arrays - 使用 Swift 排序数组错误

javascript - 像 Accordion 一样隐藏和显示内容的 CSS 动画

ios - 如何在 ios 中分解出 3 个自定义 uiView?

ios - 奇怪的UITableView插入/删除行动画