2011-12-23 42 views
0

我正在製作一個應用程序,我需要轉換圖像,並且圖像可以放置在視圖中的任何位置。但我當我使用下面的代碼做透視變換面臨的問題爲什麼我的3D旋轉圖像與其他圖像相交?

CATransform3D rotationAndPerspectiveTransform = self.layer.transform; 
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 22.5f * M_PI/180.0f, 0, 1, 0.0f); 
self.layer.transform = rotationAndPerspectiveTransform; 

它完美,但是當我嘗試把2D圖像在「透視變形」圖像(3D),2D圖像相交3D圖像。它不出現在3D圖像上方。

這是怎麼發生的?

回答

2

如果兩個CALayers是兄弟姐妹,它們存在於相同的3-D空間中。當你像上面那樣旋轉一層時(我猜你從my older answer中抽取了,雖然沒有該代碼的透視部分),但是你可以這樣做它的錨點。

默認情況下,該錨點是圖層的中心,因此圖層被0 Z平面分割。其中一半低於0,一半高於0.

當您創建一個新圖層作爲原始圖層的同級時,它位於Z座標爲0處,因此將與您的旋轉圖層的中心相交。要將該圖層放置在現有圖層上方,可以將新圖層的zPosition屬性設置爲足夠大的正值(或可能爲負值,我一直在弄混這個值)以使整個圖層懸停在旋轉的圖層上方。

另一種可能性是將您希望位於旋轉圖層前面的圖層放置爲旋轉圖層的超級圖層的同胞。在任何三維定位兄弟圖層之前,首先遵循圖層層次結構。

+0

耶非常感謝您的澄清:-) – iphonic 2011-12-27 06:30:58