gpt4 book ai didi

ios - UIView.animate() 在 View 唤醒时卡住

转载 作者:行者123 更新时间:2023-11-28 05:35:52 58 4
gpt4 key购买 nike

我无限循环 UIView 动画,如下所示

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

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

viewDidWakeUp() 中运行与上面相同的代码并不能解决问题。

当 viewController 唤醒时,我怎样才能让动画不卡住,或者从它停止的地方继续。

澄清一下,我所说的“唤醒”是指以下任一情况:

  • 关闭应用程序并再次打开它,同时激活此 viewController,
  • 让手机休眠,然后在这个 viewController 仍然活跃的情况下唤醒它

最佳答案

添加两个通知 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)
}

关于ios - UIView.animate() 在 View 唤醒时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58669256/

58 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com