Я объявляю некоторые массивы UIImage:
var animationImages1: [UIImage] = []
var animationImages2: [UIImage] = []
Я использую фоновый поток для загрузки изображений:
DispatchQueue.global(qos: .background).async { () -> Void in
self.animationImages1 = self.createImageArray(total: 57, imagePrefix: "animation1")
self.animationImages2 = self.createImageArray(total: 42, imagePrefix: "animation2")
}
Вызванная выше функция:
var imageArray: [UIImage] = []
for imageCount in 1..<total {
var imageName = String(format: "\(imagePrefix)\(imageCount)")
let image = UIImage(contentsOfFile: Bundle.main.path(forResource: imageName, ofType: "png")!)!
//let image = UIImage(named: imageName)!
imageArray.append(image)
}
return imageArray
Затем, когда я хочу анимировать, я вызываю эту функцию:
func animate(imageView: UIImageView, images: [UIImage], duration: TimeInterval) {
imageView.animationImages = images
imageView.animationDuration = duration
imageView.animationRepeatCount = 1
imageView.startAnimating()
}
Я пытался сделать оба theImageView.stopAnimating()
и theImageView.animationImages = nil
перед повторным вызовом анимации, но не заметил никакихулучшение управления памятью с использованием любого из них.
С UIImage (named :) изображения, видимые в приложении, начинают исчезать частично или полностью, когда память заканчивается.С помощью UIImage (contentsOfFile :) приложение быстро падает, как только память заканчивается.
Примечание: я попробовал UIImage (named :) с изображениями в каталоге Assets, а затем переключился на UIImage (contentsOfFile :) с помощьюизображения, перетаскиваемые в проект за пределами Assets.xcassets
Возможно ли использовать эту функцию UIImageView для более длинных анимаций (2-5 секунд: 40-150 pngs) с размером файла около 450 Кб каждый илиЭто слишком много памяти, независимо от того, как вы это делаете?
В настоящее время он работает без проблем на новом iPad Pro, и с помощью симулятора XCode он работает хорошо (но съедает много памяти) на всехразмеры устройства.На iPhone X и iPhone 8 Plus у него заканчивается память довольно рано - после воспроизведения от 5 до 10 анимаций или около того.
Я что-то упустил, это невозможно, или мне нужноПровести дальнейшие исследования способов контроля памяти при запуске этих больших массивов UIImage с помощью startAnimating ()?
Использование памяти не снижается.Я, должно быть, куда-то кеширую ...
Спасибо за любую помощь!