我有一个要在 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/