我正在使用最初從Apple示例ViewTransitions中取得的一些代碼,以便將兩個視圖互相交換。CATransition在動畫開始之前顯示從轉換結束開始的單幀
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setType:kCATransitionFade];
[animation setDuration:0.3f];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];
[[container layer] addAnimation:animation forKey:@"swap"];
當我的過渡上devlice執行,我有時會過渡動畫的最後一幀的單個幀閃光,然後播放動畫順利。這給第二個視圖帶來了非常震撼的效果,第二個視圖在平滑動畫執行之前閃爍然後再次出現。
我的例子和蘋果例子之間的主要區別是我的意見不是全屏,我有一個容器UIView,其中包含兩個子視圖,我將我的動畫應用到容器層而不是根視圖層。我看不出這應該會有很大的不同。
在模擬器中根本不會發生此問題,並且在設備上是間歇性的(大約60-70%的時間)。有沒有人看到這種行爲,如果是這樣,你是如何解決它的?
用更多的信息更新: 該代碼最初是多部分動畫的一部分,但我將其移動到由按鈕觸發以隔離問題。這個問題出現在兩種情況下。
該動畫代表已實施,但已被刪除以嘗試隔離該問題。
在動畫過程中視圖不會改變,實際上[container setUserInteractionEnabled:NO]
正在被調用(但是如果用戶交互被禁用,問題也會發生)。
我嘗試從轉換中間開始動畫,並在使用setStartProgress
和setEndProgress
結束之前結束,問題仍然存在。
我試過減慢動畫持續時間,以及沒有效果。
你能舉出一些這個實例代碼嗎?我已經通過描述實現了我的理解,但我的'毛刺框架'仍然存在。 – teabot 2009-09-06 19:26:08