У меня было реализовано два вида изображений, подобных этому:
Изображения точно такие же.Я хочу анимировать справа налево с помощью опции .repeat, чтобы она никогда не заканчивалась.Код работает нормально, но проблема в том, что когда я пытаюсь восстановить состояние анимации, когда приложение становится активным после того, как в фоновом режиме.Анимации все еще продолжаются, но изображение как будто закончится, тогда будет только фон, а не изображения (фото № 2).
метод viewDidLoad:
secondImage.transform = CGAffineTransform.identity.translatedBy(x: +self.view.bounds.width + 440, y: 0)
NotificationCenter.default.addObserver(self, selector: #selector(self.didEnterBackground), name: .UIApplicationDidEnterBackground, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.didEnterForeground), name: NSNotification.Name.UIApplicationWillEnterForeground, object: nil)
метод didEnterBackground
firstImageTransform = firstImage.layer.presentation()?.affineTransform() ?? .identity
secondImageTransform = secondImage.layer.presentation()?.affineTransform() ?? .identity
метод didEnterForeground
self.firstImage.transform = firstImageTransform
self.secondImage.transform = CGAffineTransform.identity.translatedBy(x: +(self.firstImage.frame.origin.x + self.firstImage.frame.width ), y: 0)
self.animate()
одушевленный метод
UIView.animate(withDuration: 15, delay: 0, options: [.repeat, .beginFromCurrentState, .curveLinear], animations: { [unowned self] in
var transform = self.firstImage.transform
transform = transform.concatenating(CGAffineTransform(translationX: -(self.view.bounds.width + 440), y: 0))
self.firstImage.transform = transform
var transformSecond = self.secondImage.transform
transformSecond = transformSecond.concatenating(CGAffineTransform(translationX: -(self.view.bounds.width + 440), y: 0))
self.secondImage.transform = transformSecond }, completion: nil)