Ios 应用程序从后台重新出现后,动画将无法工作

Ios 应用程序从后台重新出现后,动画将无法工作,ios,swift,Ios,Swift,我在ViewWill中调用一些动画。仅当应用程序第一次启动时才会触发动画。当我隐藏(而不是关闭应用程序)应用程序并重新打开它时,所有动画看起来都像完成了动作。在viewDidLoad中调用动画时也会发生这种情况。我希望每次打开应用程序时动画都能重新开始,即使我没有关闭它 附件是我制作的一个动画的示例代码 func animateFlowerOne(){ let options = UIViewAnimationOptions.CurveEaseInOut //Flower

我在ViewWill中调用一些动画。仅当应用程序第一次启动时才会触发动画。当我隐藏(而不是关闭应用程序)应用程序并重新打开它时,所有动画看起来都像完成了动作。在viewDidLoad中调用动画时也会发生这种情况。我希望每次打开应用程序时动画都能重新开始,即使我没有关闭它

附件是我制作的一个动画的示例代码

func animateFlowerOne(){


    let options = UIViewAnimationOptions.CurveEaseInOut

    //Flower 1
    let flowers = UIImageView()
    flowers.image = UIImage(named: "flower-face")
    flowers.frame = CGRect(x: 100, y: 380, width: 0, height: 0)
    self.view.addSubview(flowers)


    UIView.animateWithDuration(10.0, delay: 2.0, options: options, animations: {
        flowers.frame = CGRect(x: 100, y: 380, width: 15, height: 15)
        }, completion: { animationFinished in
            UIView.animateWithDuration(10.0, delay: 2.0, options: options, animations: {
                flowers.frame = CGRect(x: 100, y: 380, width: 0, height: 0)

                }, completion: { animationFinished in
                    flowers.removeFromSuperview()
                    self.animateFlowerOne()
            })
    })
}
下面是ViewWill中所有内容的外观

override func viewWillAppear(animated: Bool) {


    audioPlayers()
    movingClouds()
    animateFlowers()
    animateFlowerOne()
    flyingPlane()
    balloon()
    hotAirBalloon()

}

有人知道为什么在我取消隐藏应用程序后它不会重新启动吗?

这就是它的工作原理:
视图将出现:
在恢复应用程序时不会被调用

要解决此问题,您应该向默认通知中心注册控制器,以获得
UIApplicationIDBecMeactivateNotification
通知。在handler方法中,可以运行动画

NSNotificationCenter.defaultCenter().addObserver(
  self,
  selector: "cameBackFromSleep:",
  name: UIApplicationDidBecomeActiveNotification,
  object: nil
)

func cameBackFromSleep(sender : AnyObject) {

   [self viewWillAppear:true];      
}
不要忘记在
deinit
方法中移除观察者


顺便说一句,像我一样调用
视图将显示
,这只是一种快捷方式。您最好定义一个常见的方法,即
视图将出现:
camebackromsleep:
调用。

它就是这样工作的:
视图将出现:
在您恢复应用程序时不被调用

要解决此问题,您应该向默认通知中心注册控制器,以获得
UIApplicationIDBecMeactivateNotification
通知。在handler方法中,可以运行动画

NSNotificationCenter.defaultCenter().addObserver(
  self,
  selector: "cameBackFromSleep:",
  name: UIApplicationDidBecomeActiveNotification,
  object: nil
)

func cameBackFromSleep(sender : AnyObject) {

   [self viewWillAppear:true];      
}
不要忘记在
deinit
方法中移除观察者

顺便说一句,像我一样调用
视图将显示
,这只是一种快捷方式。您最好定义一个常见的方法,
视图将出现:
camebackromsleep:
调用