【发布时间】:2018-06-16 19:30:24
【问题描述】:
当我使用图像序列为 imageView 设置动画时,内存使用量会增加很多,并且在动画完成后不会恢复正常。这是我的代码
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .black
view.addSubview(animationImage)
animationImage.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
animationImage.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
animationImage.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.9, constant: 0).isActive = true
animationImage.heightAnchor.constraint(equalToConstant: 400).isActive = true
var i = 0
while i < 15 {
let path = Bundle.main.path(forResource: "findItBaltas\(i)", ofType: "png")
animationImages.append(UIImage(contentsOfFile: path!)!)
i += 1
}
animationImage.animationImages = animationImages
animationImage.animationDuration = 3
animationImage.animationRepeatCount = 1
animationImage.startAnimating()
}
var animationImages = [UIImage]()
let animationImage: UIImageView = {
let imageView = UIImageView()
imageView.translatesAutoresizingMaskIntoConstraints = false
return imageView
}()
我在谷歌上搜索了一整天,我发现这是因为动画图像被缓存到设备的内存中,我应该使用 UIImage(contentsOfFile:) 而不是 UIImage(named:) 但问题仍然存在并且内存没有恢复正常。播放动画一次并从内存中删除它的缓存还有哪些其他选项?
【问题讨论】:
标签: ios swift animation uiimageview