我有一个主要的CALayer,其中包含一些子图层。我围绕x轴旋转了主层89度,所以我几乎看不到它(它现在接近于屏幕中间的切片)。
CATransform3D moveToOrigin = CATransform3DMakeTranslation(-self.bounds.size.width / 2.0f, -self.bounds.size.height / 2.0f, 0.0);
CATransform3D rotateX = CATransform3DConcat(moveToOrigin, CATransform3DMakeRotation(DEGREES_TO_RADIANS(89.0), 1.0, 0.0, 0.0));
CATransform3D finalTransform = CATransform3DConcat(rotateX, CATransform3DMakeTranslation(self.bounds.size.width / 2.0f, self.bounds.size.height / 2.0f, 0.0));
mainLayer.transform = finalTransform;
现在我想沿着z轴移动每个子图层,使其看起来像一个层间的间距。不幸的是,我看到的只是主层上的所有子层都是平坦的。
for (int i = 0; i < self.sublayers.count; i++) {
CALayer *aLayer = _layers[i];
transform = CATransform3DMakeTranslation(0.0, 0.0, 100 * i);
}
奇怪的是,沿x轴或y轴移动就像一个魅力。 它与子图层转换有关吗?
更改zPosition属性与沿着z轴移动CATransform3D的图层相同吗?
答案 0 :(得分:3)
当渲染图层时,它们通常被展平,因此即使它们可能包含具有不同Z值的子图层,渲染图层也将是平坦的。但是,有一个图层类没有这种行为,它被称为CATransformLayer
。它没有自己的任何内容,但它也保留了子层完整。