我有一个名为UIButton
的{{1}},它具有脉动或呼吸动画。在模拟器和设备中测试应用程序时,一切正常,直到动画发生时我单击“主页”按钮为止。如果我确实按下了“主页”按钮,然后重新打开应用程序,则动画将不再发生。
我尝试了在此站点上找到的各种答案,但都没有成功。我曾尝试使用findButton
和Extensions
,但过去对人们来说没有任何作用。下面是在按下“主页”按钮之前可以完美工作的动画代码:
NotificationCenter
我想知道是否可能需要在动画进入背景之前暂停动画?
更新:通过移动在按下后发生的动画,我可以使“ findButton”在按下时起作用。我创建了一个新的VC和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)
}
,并在其中放置了class
IBAction和单击后动画。
不幸的是,findButton
从后台返回后仍然没有生命。我希望findButton
现在可以正常工作,因为我将点击后动画从第一个VC中移出了。
答案 0 :(得分:2)
@pooja的答案肯定会带您走正确的道路。但是,如果您使用的是iOS 12,Xcode 10,Swift 4.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)
答案 1 :(得分:0)
您可以尝试注册进入后台的应用程序
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