2015-04-17 44 views
1
開始

我有一個簡單的問題:)但我要求從真棒程序員在stackoverflow社區獲得好處。UIView animateWithDuration從

我在viewDidAppear我的源視圖使用UIView.animateWithDuration動畫開始如下調用startTheStory():

override func viewDidAppear(animated: Bool) { 

    if !animate { 

     startTheStory() 
    } 
} 

然後通過使用自定義賽格瑞目的地視圖查看交易。

我的問題是當交易開始在源視圖中的動畫重新開始,所以我嘗試用下面的代碼來阻止它:

override func viewWillDisappear(animated: Bool) { 
    animate = true 

    self.view.layer.removeAllAnimations() 
} 

但它不工作。

另外我嘗試了prepareForSegue(),但它不起作用。

有什麼想法?

感謝

回答

1

刪除此行self.view.layer.removeAllAnimations()

,並添加這些行

[CATransaction begin] 
[_backgroundView.layer removeAllAnimations] 
[CATransaction commit] 
[CATransaction flush] 

千萬記住導入QuartzCore/QuartzCore.h

之所以動畫星星,是因爲

if !animate { 

     startTheStory() 
    } 

總是在viewDidAppear方法中執行,因爲每當視圖要在屏幕上再次繪製時,「animate」設置爲false。 在調用viewDidAppear時,將viewWillDisappear中的「animate」設置爲「True」將再次重置爲「False」。因此,儘量保持應用程序委託中的「animate」var global,並設置這個值應該做的事。

+0

感謝您的幫助。仍然動畫開始 – Mariam

+0

@Mariam我編輯了我的答案。 – Manoj

相關問題