用户按下主页按钮后,UIButton 变为 Inanimate
UIButton becomes Inanimate after the user presses Home Button
我有一个名为 findButton
的 UIButton
,它有脉动或呼吸动画。在模拟器和设备中测试应用程序时,一切正常,直到我在动画发生时单击主页按钮。如果我按下主页按钮然后重新打开应用程序,动画将不再出现。
我尝试了在此站点上找到的各种答案,none 都奏效了。我试过使用 Extensions
和 NotificationCenter
,但过去对人们有用的东西对我都没有用。下面是在按下主页按钮之前完美运行的动画代码:
override func viewWillAppear(_ animated: Bool) {
UIView.animate(withDuration: 1.0,
delay: 0,
options: [.autoreverse, .repeat, .allowUserInteraction],
animations: {
self.findButton.transform = CGAffineTransform(scaleX: 1.175, y: 1.175)}, completion: nil)
}
我想知道是否需要在动画进入后台之前暂停它?
更新:通过移动按下后出现的动画,我能够让 'findButton' 在按下时工作。我创建了一个新的 VC 和 class
,并将 findButton
IBAction 与 post-click 动画放在那里。
不幸的是,findButton
从后台返回后仍然没有生命。我希望 NoticationCenter
现在可以工作,因为我将 post-click 动画从第一个 VC 中移出。
您可以尝试注册申请确实进入后台
NotificationCenter.default.addObserver(self, selector:#selector(doSomethingBefore), name: NSNotification.Name.UIApplicationDidEnterBackground, object: nil)
应用程序注册将生效
NotificationCenter.default.addObserver(self, selector:#selector(doSomething), name: NSNotification.Name.UIApplicationWillEnterForeground, object: nil)
设置视图消失时按钮的变换
@objc func doSomethingBefore(){
findButton.transform = .identity
}
当应用激活时开始动画
@objc func doSomething(){
self.view.layoutIfNeeded()
UIView.animate(withDuration: 1.0,
delay: 0.3,
options: [.autoreverse, .repeat, .allowUserInteraction],
animations: {
self.findButton.transform = CGAffineTransform(scaleX: 1.175, y: 1.175)}, completion: nil)
self.view.layoutIfNeeded()
}
您可以看到一个工作示例here
@pooja 的回答一定会让您走上正确的道路。但是如果你使用的是iOS12、Xcode10、Swift4.2,那么你在实现NotificationCenter时会运行出现一些错误。尝试@pooja 的代码,但进行以下更改:
NotificationCenter.default.addObserver(self, selector:#selector(doSomethingBefore), name: UIApplication.didEnterBackgroundNotification, object: nil)
NotificationCenter.default.addObserver(self, selector:#selector(doSomething), name: UIApplication.willEnterForegroundNotification, object: nil)
我有一个名为 findButton
的 UIButton
,它有脉动或呼吸动画。在模拟器和设备中测试应用程序时,一切正常,直到我在动画发生时单击主页按钮。如果我按下主页按钮然后重新打开应用程序,动画将不再出现。
我尝试了在此站点上找到的各种答案,none 都奏效了。我试过使用 Extensions
和 NotificationCenter
,但过去对人们有用的东西对我都没有用。下面是在按下主页按钮之前完美运行的动画代码:
override func viewWillAppear(_ animated: Bool) {
UIView.animate(withDuration: 1.0,
delay: 0,
options: [.autoreverse, .repeat, .allowUserInteraction],
animations: {
self.findButton.transform = CGAffineTransform(scaleX: 1.175, y: 1.175)}, completion: nil)
}
我想知道是否需要在动画进入后台之前暂停它?
更新:通过移动按下后出现的动画,我能够让 'findButton' 在按下时工作。我创建了一个新的 VC 和 class
,并将 findButton
IBAction 与 post-click 动画放在那里。
不幸的是,findButton
从后台返回后仍然没有生命。我希望 NoticationCenter
现在可以工作,因为我将 post-click 动画从第一个 VC 中移出。
您可以尝试注册申请确实进入后台
NotificationCenter.default.addObserver(self, selector:#selector(doSomethingBefore), name: NSNotification.Name.UIApplicationDidEnterBackground, object: nil)
应用程序注册将生效
NotificationCenter.default.addObserver(self, selector:#selector(doSomething), name: NSNotification.Name.UIApplicationWillEnterForeground, object: nil)
设置视图消失时按钮的变换
@objc func doSomethingBefore(){
findButton.transform = .identity
}
当应用激活时开始动画
@objc func doSomething(){
self.view.layoutIfNeeded()
UIView.animate(withDuration: 1.0,
delay: 0.3,
options: [.autoreverse, .repeat, .allowUserInteraction],
animations: {
self.findButton.transform = CGAffineTransform(scaleX: 1.175, y: 1.175)}, completion: nil)
self.view.layoutIfNeeded()
}
您可以看到一个工作示例here
@pooja 的回答一定会让您走上正确的道路。但是如果你使用的是iOS12、Xcode10、Swift4.2,那么你在实现NotificationCenter时会运行出现一些错误。尝试@pooja 的代码,但进行以下更改:
NotificationCenter.default.addObserver(self, selector:#selector(doSomethingBefore), name: UIApplication.didEnterBackgroundNotification, object: nil)
NotificationCenter.default.addObserver(self, selector:#selector(doSomething), name: UIApplication.willEnterForegroundNotification, object: nil)