2016-02-17 115 views
2

我想了解如何創建深度感知到我的UIView這樣的:瞭解CATransform3DRotate/CATransform3DMakeRotation

enter image description here

我試過這段代碼:

var rotationWithPerspective = CATransform3DIdentity; 
rotationWithPerspective.m34 = -1.0/500.0/2/2 
rotationWithPerspective = CATransform3DRotate(rotationWithPerspective, 22.5, 0, 1, 0); 
preview.layer.transform = rotationWithPerspective 

產生透視。然而,它翻轉視圖出於某種原因。

1)如何避免轉換後的「翻轉」?

2)轉換產生的「透視深度」是否與每個給定的UIView相同,或者它取決於UIView大小等?

謝謝!

回答

2

CATransform3DRotate預計弧度不是度數。你正在旋轉22.5弧度,就像1200度。這可能是爲什麼你的形象是顛倒的。你可能想用這個:

let radians = 22.5 * M_PI/180 
rotationWithPerspective = CATransform3DRotate(rotationWithPerspective, radians, 0, 1, 0); 
+0

謝謝凱爾!順便說一句,你對我的第二個問題有答案嗎?它是「全球視角」值還是每UIView? –

1

對於2)

  • 這是每UIView的。
  • 如果您想要應用於子圖層,可以使用sublayerTransform。 例如preview.layer.sublayerTransform = rotationWithPerspective

你可以在iOS Core Animation - Advanced Techniques by Nick Lockwood中閱讀更多關於它的內容。希望有所幫助。