Swift - Повтор анимации перехода - PullRequest
0 голосов
/ 24 сентября 2018

У меня было реализовано два вида изображений, подобных этому: enter image description here

Изображения точно такие же.Я хочу анимировать справа налево с помощью опции .repeat, чтобы она никогда не заканчивалась.Код работает нормально, но проблема в том, что когда я пытаюсь восстановить состояние анимации, когда приложение становится активным после того, как в фоновом режиме.Анимации все еще продолжаются, но изображение как будто закончится, тогда будет только фон, а не изображения (фото № 2).

enter image description here

метод 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)
...