Приостановить анимацию при представлении контроллера модального вида - PullRequest
0 голосов
/ 23 октября 2019

У меня есть две анимации, которые воспроизводятся на контроллере вида моего домашнего экрана. Это обе анимации от LottieFiles. Один представляет собой изменяющийся фон альфа-цвета, а другой - бесконечный цикл с разными цветами. Когда выбран новый модальный вид в текущем контексте, я хочу приостановить обе анимации и запустить их снова, как только модальный вид будет отклонен. Я попытался вызвать метод animationView.pause, однако они все еще продолжают воспроизводиться в фоновом режиме. Я хотел бы приостановить их для повышения энергоэффективности.

      class HomeScreen: UIViewController{
 let animationView = AnimationView()
 let animationTwo = AnimationView()

 func showSupport() {

    let modalViewController = SupportViewController()
    modalViewController.modalPresentationStyle = .overCurrentContext
    present(modalViewController, animated: true, completion: nil)
}
 func showSInfo() {

    let modalViewController = InfoViewController()
    modalViewController.modalPresentationStyle = .overCurrentContext
    present(modalViewController, animated: true, completion: nil)
}
override func viewDidAppear(_ animated: Bool) {

    super.viewDidAppear(animated)


    animationView.play(fromProgress: 0,
                       toProgress: 1,
                       loopMode: LottieLoopMode.loop,
                       completion: { (finished) in
                        if finished {
                            print("Animation Complete")
                        } else {
                            print("Animation cancelled")
                        }
    })


    animationTwo.play(fromProgress: 0,
                       toProgress: 1,
                       loopMode: LottieLoopMode.loop,
                       completion: { (finished) in
                        if finished {
                            print("Animation Complete")
                        } else {
                            print("Animation cancelled")
                        }
    })

}
 override func viewDidLoad() {
   let animation = Animation.named("bg12")
    animationView.animation = animation
    animationView.contentMode = .scaleAspectFill
    view.addSubview(animationView)

    let animationViewTwo = Animation.named("infi2")
    animationTwo.animation = animationViewTwo
    animationTwo.contentMode = .scaleAspectFit
    animationTwo.alpha = 0.7
    view.addSubview(animationTwo)
 }
    }


 class SupportViewController: UIViewController {
     let homeVC = HomeScreen()

  override func viewDidLoad() {
    homeVC.animationView.pause()
    homeVC.animationTwo.pause()
    super.viewDidload()
}
 }

1 Ответ

0 голосов
/ 25 октября 2019

Не можете ли вы поставить паузу в обработчик завершения настоящего, например:

present(modalViewController, animated: true) {
    self.animationView.pause()
}
...