我正在尝试根据此项目制作一个带CALayers
的高级3D多维数据集:
我有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
子图层,与其中一个立方体边相同的3D“位置”。我的想法是将transform
乘以所有CALayer
层次结构transrforms
,如下所示:
testLayer.transform = CATransform3DConcat(rootLayer.sublayerTransform, testLayer.transform);
testLayer.transform = CATransform3DConcat(transformLayer.sublayerTransform, testLayer.transform);
testLayer.transform = CATransform3DConcat(bottomSide.transform, testLayer.transform);
我只收到垃圾 - 图层没有放在与bottomSide
相同的3D“位置” - 它只是消失了。
但是将图层放在frontSide或backSide中是成功的(只有这两面)。有人能告诉我我做错了什么吗?
答案 0 :(得分: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;
现在它运作正常。