我正在尝试使用 CALayers 在我的一个应用程序中创建 3D 样式效果。但是,嵌套的 CALayers 似乎没有应用透视图。
用伪代码来说明,如果我有一个像这样应用透视的图层:
CATransform3D subLayerTransform = CATransform3DIdentity;
/* set perspective */
subLayerTransform.m34 = -0.002;
superLayer.sublayerTransform = subLayerTransform;
添加然后添加一个图层,如下所示:
CALayer *sublayer = [CALayer layer];
sublayer.frame = layerFrame;
sublayer.contents = (id)[image CGImage];
[superLayer addSublayer: sublayer];
透视按预期应用。但是,如果我要尝试进一步嵌套层
CALayer *sublayer = [CALayer layer];
[superLayer addSublayer: sublayer];
CALayer *nestedlayer = [CALayer layer];
nestedlayer.frame = layerFrame;
nestedlayer.contents = (id)[image CGImage];
[sublayer addSublayer: nestedlayer];
嵌套层在旋转时是平的。
就好像 superLayer 仅将变换应用于层层次结构中直接位于其下方的层。是这样吗?还是我做错了什么?