【问题标题】:Restart animation when returning to foreground返回前台时重新启动动画
【发布时间】:2016-03-08 02:40:04
【问题描述】:

当应用返回前台时,我在重新启动动画时遇到问题。我检查了这个solution,但它对我不起作用。

在我的 App Delegate 中,我正在取消应用退出时的动画

func applicationWillResignActive(application: UIApplication) {
    let rootVC = window?.rootViewController as! ViewController
    rootVC.boardImage.layer.removeAllAnimations()
}

当应用进入前台时,我会向 View Controller 发布通知

func applicationWillEnterForeground(application: UIApplication) {
    NSNotificationCenter.defaultCenter().postNotificationName("didEnterForeground", object: nil)
}

视图控制器有一个调用该方法的观察者,但动画没有重新启动。

调用方法:

func playAnimation(notification: AnyObject) {
    gameLogic.boardFlash(boardImage)
}

boardFlash 动画:

func boardFlash(board: UIImageView) {
    let options:UIViewAnimationOptions = [.Autoreverse, .Repeat]

    UIView.animateWithDuration(0.3, delay: 1.0, options: [options], animations: {
        board.alpha = 0.0
        }, completion: nil)
}

我检查了所有东西都被调用了,但是动画没有运行。任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 在调用动画方法之前,您是否将板子的 alpha 重置回 1.0?
  • 是的。当视图最初加载时,它会运行相同的动画。那个很好用。
  • 对不起,我的评论不是很清楚,我的意思是,当你第一次创建视图时,你试图动画它的 alpha 为 1,然后你第一次动画它 o 零,动画第一次运行后,你有没有把板子的 alpha 重新设置回一个?
  • 我没有看到您在选项中有自动反转功能!我的错,对不起
  • @BlakeLockley 不用担心。是的,它有一个 autoReverse

标签: ios swift uiviewanimation


【解决方案1】:

感谢@BlakeLockley 的评论,我解决了。

我在观察者方法调用中将 board Image View alpha 设置为 1.0。

func playAnimation(notification: AnyObject) {
    boardImage.alpha = 1.0
    gameLogic.boardFlash(boardImage)
}

现在它工作正常。不过有趣的解决方案。

【讨论】:

  • 我很高兴我能间接提供帮助,哈哈!一定是迅速想到alpha在幕后仍然设置为零之类的,我去看看是否能找到原因。
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 2023-03-09
  • 1970-01-01
  • 2021-12-26
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多