Есть ли "ядерная опция" для выпуска изображений из массива изображений? Я хотел бы воспроизвести первый анимационный файл1 (ImageSet1), затем в блоке завершения удалить эту анимацию, а затем загрузить и воспроизвести вторую анимацию2 (ImageSet2) и т.д.: Стирать, полоскать, повторять - вы ее получите:)
Сначала я определяю переменные экземпляра моего ViewController:
var animation1: [UIImage] = []
var animation2: [UIImage] = []
var animation3: [UIImage] = []
Затем я создаю анимационный массив для каждой анимации:
func createImageArray(total: Int, imagePrefix: String) -> [UIImage]{
var imageArray: [UIImage] = []
for imageCount in 0..<total {
let imageName = "\(imagePrefix)-\(imageCount).png"
let image = UIImage(named: imageName)!
imageArray.append(image)
}
return imageArray
}
Затем я устанавливаю значения анимации:
func animate(imageView: UIImageView, images: [UIImage]){
imageView.animationImages = images
imageView.animationDuration = 1.5
imageView.animationRepeatCount = 1
imageView.startAnimating() }
animation1 = createImageArray(total: 28, imagePrefix: "ImageSet1")
animation2 = createImageArray(total: 53, imagePrefix: "ImageSet2")
animation3 = createImageArray(total: 25, imagePrefix: "ImageSet3")
И, наконец, вызовите функцию анимации
func showAnimation() {
UIView.animate(withDuration: 1, animations: {
animate(imageView: self.animationView, images: self.animation1)
}, completion: { (true) in
// Release the Images from the Array
})
}
Я хотел бы выпустить изображения из массива изображений в блоке завершения, чтобы уменьшить объем памяти, но я не могу заставить это работать, я попробовал все четыре примера ниже, но нет никакого эффекта на объем памяти:
func showAnimation() {
UIView.animate(withDuration: 1, animations: {
animate(imageView: self.animationView, images: self.animation1)
}, completion: { (true) in
self.animation1 = [] // is this correct?
self.animationView.image = nil // also doesn't work
self.animationView.removeFromSuperview() // also doesn't work
self.animation1 = nil // also doesn't work
})
}
После блока завершения я установил массив анимации равным [], и он удалит анимацию (вы больше не видите ее), но след памяти остается тем же (я также пробовал другие три варианта также).
С вышесказанным, объем памяти "удары" каждый раз, когда я добавляю следующую анимацию, и в конечном итоге приводит к тому, что ОС завершает приложение
Даже когда вы меняете ViewControllers, массив все еще держит изображения в памяти
Спасибо за любую помощь:)