Прежде всего, если у вас есть несколько анимаций в одном и том же ViewController
(VC), которые появляются после нажатия playButton
, это может объяснить, почему он отключается после возврата из фона.Зачем?Я не знаю.Но у меня была похожая проблема, и я решил ее, создав новые class
и VC для нескольких анимаций, которые изначально были установлены при нажатии моей UIButton
.Внутри моей кнопки IBAction
я просто создал переход к новому VC.
Что касается анимации, вы можете подойти к этому двумя способами: 1) приостановить и возобновить анимацию с помощью CALayer ИЛИ 2) просто использовать NotificationCenter, даже не касаясь какого-либо кода AppDelegate.Я предпочитаю простые способы, т.к. это сэкономит время и силы.Итак, попробуйте этот код в VC, где должна происходить анимация кнопки:
override func viewWillAppear(_ animated: Bool) {
NotificationCenter.default.addObserver(self, selector:#selector(goingToBackground), name: UIApplication.didEnterBackgroundNotification, object: nil)
NotificationCenter.default.addObserver(self, selector:#selector(openingApp), name: UIApplication.willEnterForegroundNotification, object: nil)
UIView.animate(withDuration: 1.0,
delay: 0,
options: [.autoreverse, .repeat, .allowUserInteraction],
animations: {
self.playButton.transform = CGAffineTransform(scaleX: 1.175, y: 1.175)
},
completion: nil)
}
@objc func goingToBackground(){
playButton.transform = .identity
}
@objc func openingApp(){
self.view.layoutIfNeeded()
UIView.animate(withDuration: 1.0,
delay: 0.3,
options: [.autoreverse, .repeat, .allowUserInteraction],
animations: {
self.playButton.transform = CGAffineTransform(scaleX: 1.175, y: 1.175)}, completion: nil)
self.view.layoutIfNeeded()
}