2011-05-31 69 views
0

我有一個視圖控制器與視圖控制器出現時運行的動畫。 每次出現視圖控制器時,動畫應重置到某個位置並重新播放動畫。 viewWillAppear重置動畫子視圖的位置。 viewDidAppear運行CALayer動畫。 它首次運行良好,但是當我呈現模態視圖控制器並將其解除時,動畫視圖控制器的子視圖會在動畫的最終位置出現一小段時間,然後重置到開始動畫的原始位置。 我確定viewWillAppear被調用,它應該重置動畫子視圖的位置。dismissModalViewController調用後,與CALayer動畫問題

歡迎任何建議。 感謝您的提前。

+0

我很困惑。您指出當您關閉視圖控制器時發生問題,但僅討論視圖出現時運行的代碼。 – ax123man 2011-05-31 12:23:29

+0

你可以顯示動畫代碼嗎? – 2011-05-31 12:36:30

回答

0

我認爲你的直覺是正確的:當你關閉模態視圖控制器時,底層視圖再次顯示,它控制器收到消息viewWillAppear/viewDidAppear

您必須解決這個問題的一個可能性是重置viewDidLoad中的動畫,一旦視圖加載到內存中,該動畫將被調用(如果視圖未被卸載,則只調用一次)。確實,這種方法用於完成視圖初始化,並且似乎是將動畫放置在哪裏的正確位置。

如果這個解決方案不適合你的應用(我不知道你在做什麼)你需要在viewWillAppear中重置,你可以考慮在你的控制器中設置一個標誌,當模態視圖顯示,所以你知道,下一次你的控制器收到viewWillAppear,它是在模態視圖關閉之後發生的,並且你沒有進行重置。我並不是建議你這樣做,這很不好,不夠靈活,只是說,如果你不能接受另一種解決方案。更好地重新設計您的應用程序,以便在viewWillAppear中不需要重置。