2016-03-08 22 views
2

當應用程序返回到前臺時,我遇到了重新啓動動畫的問題。我檢查了這個solution,但它不適合我。返回前臺時重新啓動動畫

在我的應用程序代表,我取消動畫時,應用程序辭職

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

而當應用程序進入前景

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) 
} 

我檢查,一切都獲取調用,但動畫沒有運行。任何幫助將不勝感激。謝謝!

+1

您是否在調用動畫方法之前將板的alpha重置爲1.0? –

+0

是的。它最初加載視圖時運行相同的動畫。那個工作正常。 –

+1

對不起,我的評論不是很清楚,我的意思是,當您第一次創建視圖時,您嘗試設置動畫效果,其alpha值爲1,然後在第一次動畫之後第一次爲零時創建動畫運行,你有沒有將板子的alpha值重新設置爲1? –

回答

1

感謝@BlakeLockley評論我解決了它。

我在觀察者方法調用中將板子圖像視圖alpha設置爲1.0。

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

現在它工作正常。雖然有趣的解決方案。

+1

我很高興我可以間接幫忙,哈哈!這一定是一個快速思考的問題,阿爾法仍然設置在幕後或零,我會看看,如果我能找到原因。 –