UIView.animate() 在视图唤醒时冻结

UIView.animate() freezes when view wakes up

我正在使用以下内容无限循环 UIView 动画

UIView.animate(withDuration: 1.0, delay: 0, options: [.autoreverse, .repeat], animations: {
        self.someLabel.alpha = 0.3
    }, completion: nil)

这工作正常,但是当 viewController 唤醒时动画冻结在原处。

运行 与上面 viewDidWakeUp() 中相同的代码无法修复它。

如何让动画不冻结,或者在 viewController 唤醒时从停止的地方继续播放。

澄清一下,'wake up' 是指以下任一情况:

添加两个通知 willEnterForegroundNotification 和 didEnterBackgroundNotification。

同样值得注意。在某些情况下,您需要重置动画 属性 以使新动画生效。我可以通过动画转换来证实这一点。

刚刚打电话...

 view.layer.removeAllAnimations()
 self.someLabel.alpha = 1.0

//完整代码

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view, typically from a nib.

    NotificationCenter.default.addObserver(self, selector:#selector(didEnterForeground) , name: UIApplication.willEnterForegroundNotification, object: nil)

    NotificationCenter.default.addObserver(self, selector:#selector(didEnterBackground) , name: UIApplication.didEnterBackgroundNotification, object: nil)

}

@objc  func didEnterBackground() {
    view.layer.removeAllAnimations()
    self.someLabel.alpha = 1.0
}


@objc func didEnterForeground()  {

    DispatchQueue.main.async {
        self.animation()
    }

}
func animation() {

    UIView.animate(withDuration: 1.0, delay: 0, options: [.autoreverse, .repeat], animations: {
        self.someLabel.alpha = 0.3
    }, completion: nil)
}