9

在CATransform3DMakeRotation中使用以下UIView動畫,一半的UIView將在變換過程中消失並在完成時重新出現。只有當界面構建器的視圖層次結構中的UIView背後有UIImageView時纔會發生這種情況。CATransform3DMakeRotation在動畫過程中隱藏了一半的UIView

[UIView animateWithDuration:1.0 delay:0.0 options:nil animations:^{ 
     myView.layer.transform = CATransform3DMakeRotation(M_PI,0.0,1.0,0.0); 
    } completion:nil]; 

下面是在界面生成器

Interface Builder layout

和下面的動畫結果視圖佈局。

enter image description here

第2圖像是任何動畫已經發生之前,左半消失。縮小後,再經過中心點,右側(前一個左側)再次出現,如第4張圖所示。

當背景圖像是使用設置

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"jeans.png"]]; 

在動畫完成按預期方式。

+0

時,有沒有背後的UIImageView這也能正常工作。 –

+0

請解釋你想要實現的目標...從圖像中,我看到這是一種正常行爲,因爲你在Y軸上旋轉 – Mazyod

+0

中間的2張圖像位於動畫的開頭和結尾,例如動畫開始時,左側在寬度變化之前消失。只有在動畫完成後再次出現。如果這使得它更清晰? –

回答

23

爲了記錄在案,答案是我的評論

imageView.layer.zPosition = -400; 

或者你可以做

myView.layer.zPosition = 400; // or some number greater than width/2 

它看起來像旋轉視圖的一部分是由後臺視圖閉塞。由於它圍繞其中心點旋轉,因此它的一部分傳遞到負Z空間,所以在背景之後。

所以從

------- imageView 
------- myView 

/myView 
    /
------- imageView 
/
/
+0

感謝您的解釋。現在它是有道理的。乾杯!! –

+0

正是我在找的東西。謝謝。 – Yariv

+0

謝謝,很好的提示! – MacMark