【问题标题】:How to fix: UIView animations not restarting when returning to view controller如何修复:返回视图控制器时 UIView 动画未重新启动
【发布时间】:2019-09-01 20:29:53
【问题描述】:

我有一个在 ViewController 首次打开时开始动画的视图。它在初始启动时工作正常,但在离开动画后返回视图时不会重新启动。视图嵌入在导航控制器中

我尝试将动画放置在几个位置,包括 viewWillAppear、viewDidAppear 和 viewWillLayoutSubviews

我在 viewDidAppear 中放置了一个断点,它会单步执行代码,但动画不会重新启动。

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(true)
        UIView.animate(withDuration: 20.0, delay: 0, options: [.autoreverse, .repeat, .curveLinear], animations: {
            self.scrollingView.transform = CGAffineTransform(translationX: -350, y: 0)
        }, completion: nil)
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(true)
        scrollingView.layer.removeAllAnimations()
    }

【问题讨论】:

标签: swift animation viewwillappear


【解决方案1】:

您需要在segue 期间将scrollingView 返回到其原始位置,因为UINavigationController 第一个UIViewController 不会超出范围,也就是它不会再次实例化。因此,当您回到第一个UIViewController 时,scrollingView 仍在运行之前的动画。

您需要使用以下代码重新启动 CGAffineTransform:

override func viewDidDisappear(_ animated: Bool) {
     self.textView.transform = CGAffineTransform.identity
} 

【讨论】:

  • 非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多