用户按下Home Button后,UIButton变为无生命

问题描述 投票:0回答:2

我有一个名为UIButtonfindButton,它有一个脉冲或呼吸动画。在模拟器和设备中测试应用程序时,一切都运行正常,直到我在动画发生时单击主页按钮。如果我按下主页按钮然后重新打开应用程序,则不再出现动画。

我尝试了在这个网站上找到的各种答案,但没有一个有效。我已经尝试过使用ExtensionsNotificationCenter,但过去认为对人们起作用的任何东西都不适合我。下面是在按下Home按钮之前完美运行的动画代码:

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与后点击动画放在一起。

不幸的是,从背景返回后,findButton仍然无生气。我希望NoticationCenter能够工作,因为我将点击后的动画移出了第一个VC。

ios swift uibutton uiviewanimation notificationcenter
2个回答
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)

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

© www.soinside.com 2019 - 2024. All rights reserved.