2014-12-03 34 views
0

我試着在此基礎上項目,使先進的3D立方體CALayers廣場的CALayer的子層層次

https://github.com/joericioppo/3D-Layers/tree/master

我有這樣的CALayer層次:

self.layer 
| 
| 
rootLayer (CALayer) <--- in this point the cube is rotated by changing the rootLayer.sublayerTransform property 
    | 
    | 
    transrormLayer(CATransformLayer) 
     | 
     | 
     frontSide (CALayer) 
     backSide (CALayer) 
     ... 
     bottomSide(CALayer) 

我想要在self.layer中的子圖層中插入CALayer作爲立方體si之一的相同3D「位置」 DES。我的想法是乘其transform所有CALayer層次transrforms這樣的:

testLayer.transform = CATransform3DConcat(rootLayer.sublayerTransform, testLayer.transform); 
testLayer.transform = CATransform3DConcat(transformLayer.sublayerTransform, testLayer.transform); 
testLayer.transform = CATransform3DConcat(bottomSide.transform, testLayer.transform); 

我只收到垃圾 - 該層沒有放置在相同的3D「位置」爲bottomSide - 它只是消失。 但是將圖層放置在正面或背面是成功的(只有這2面)。有人能告訴我什麼我做錯了嗎?

回答

0

我刪除了transrormLayer。並改變了操作順序。

CATransform3D t = CATransform3DIdentity; 
t = CATransform3DConcat(bottomSide.transform, t); // cube side position 
t = CATransform3DConcat(rootLayer.sublayerTransform, t); // cube rotation and perspective 
testLayer.transform = t; 

現在它工作正常。