我在viewWillAppear中调用了一些动画。动画仅在应用程序第一次启动时触发。当我隐藏(不关闭应用程序)应用程序并重新打开它时,所有动画看起来都会完成他们的操作。当我在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()
})
})
}
以下是viewWillAppear
中所有内容的外观override func viewWillAppear(animated: Bool) {
audioPlayers()
movingClouds()
animateFlowers()
animateFlowerOne()
flyingPlane()
balloon()
hotAirBalloon()
}
任何人都知道为什么在取消隐藏应用后它没有重新启动?
答案 0 :(得分:5)
这就是它的工作原理:恢复应用时不会调用viewWillAppear:
。
解决此问题的方法是使用UIApplicationDidBecomeActiveNotification
通知的默认通知中心注册您的控制器。在处理程序方法中,您可以运行动画。
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "cameBackFromSleep:",
name: UIApplicationDidBecomeActiveNotification,
object: nil
)
func cameBackFromSleep(sender : AnyObject) {
[self viewWillAppear:true];
}
不要忘记在deinit
方法中删除观察者。
BTW,像我一样调用viewWillAppear
只是一个捷径。您最好定义viewWillAppear:
和cameBackFromSleep:
调用的常用方法。