2011-12-12 132 views
5

我正在使用UIView動畫來調整和翻譯包含多個子視圖的視圖。父視圖的動畫完美地發生;然而,子視圖表現出奇怪的行爲。動畫開始時,子視圖會立即調整大小,然後移至其最終位置。UIView調整大小和翻譯動畫不會正確動畫子視圖

例如,如果動畫的持續時間和延遲爲五秒,則只要動畫被調用,子視圖就會移動到所需的動畫結束值。五秒後,超級視圖將被調整大小並翻譯成所需的內容。

我對動畫代碼是:

[UIView animateWithDuration:0.5 animations:^{ 
    if (UIDeviceOrientationIsLandscape(self.interfaceOrientation)) { 
     self.leftPaneView.frame = leftPaneLandscapeFrame; 
     self.rightPaneContainerView.frame = rightPaneLandscapeFrame; 
    } 
    if (UIDeviceOrientationIsPortrait(self.interfaceOrientation)) { 
     CGFloat offset = 300; 
     self.leftPaneView.frame = CGRectOffset(leftPanePortraitFrame, -offset, 0); 
     self.rightPaneContainerView.frame = rightPanePortraitFrame; 
    } 
}]; 

任何想法?

注意:rightPaneContainerView包含UIViewController的視圖,該視圖是調用此動畫的視圖控制器的子視圖。

+1

我已經看到了你的代碼,我無法重現您的問題。由於這只是一部較大的動畫片,我想這個問題與整個事件序列有關。如果可以的話,分享更多的代碼,並且可能會顯示自己。 – GrimmRanger

+0

謝謝你看看內臟。跳轉子視圖的內容模式被設置爲左側,導致動畫中令人不快的錯誤。我的一個業餘錯誤。 – Eytan

回答

7

我設法解決了這個問題。某些視圖的內容模式設置爲「左」。當動畫開始時,視圖會跳到左邊,然後被動畫到所需的動畫結束值。

一個業餘的錯誤。感謝所有看過的人。

+0

好抓!很高興你解決了這個問題,謝謝你發佈你的解決方案! – GrimmRanger

+0

有同樣的問題,謝謝。 – Anastasia

+0

那麼你選擇了哪個'contentMode'? – Colas