Вы смешиваете 2 разных типа анимации.Не делай этого.Использование animationImages
свойства UIImageView
отличается от использования UIView
методов анимации, таких как UIView.animate(duration:animations:)
. Избавьтесь от этой UIView
оболочки анимации и просто укажите изображения анимации и другие параметры дляпредставление вашего изображения:
@IBAction func targetTouchAction(_ sender: Any) {
let jumpImages = ["Jump_1","Jump_2","Jump_3","Jump_4","Jump_5","Jump_6","Jump_7","Jump_8","Jump_9","Jump_10"]
var images = [UIImage]()
for image in jumpImages{
images.append(UIImage(named: image)!)
}
self.imageView.frame.origin.y = self.imageView.frame.origin.y + 100.0
self.imageView.animationImages = images
self.imageView.animationDuration = 2.0
self.imageView.animationRepeatCount = 1
self.imageView.startAnimating()
}
Обратите внимание, что загрузка массива изображений в представление изображений при каждом запуске анимации не требуется, но все равно должна работать.
Я не работалс SpriteKit, поэтому я не уверен, как ваша анимация представления изображения будет взаимодействовать с этим.(Кроме того, вы не показывали эту часть своего кода.)
Также обратите внимание, что вы можете создать свой массив изображений с 1 строкой кода и без использования жестко закодированного массива имен файлов:
let images: [UIImage] = (1...10).map { return UIImage(named: "Jump_\($0)") }
Этот код создает последовательность от 1 до 10. Затем он использует оператор map для преобразования этой последовательности в массив изображений, передавая значение в строку и используя эту строку в качестве имени изображения впозвоните по номеру UIImage(named:)