J'essaie d'utiliser CALayers pour créer un effet de style 3D dans l'une de mes applications. Cependant, il semble que CALayers imbriqués n'ont pas de perspective appliquée à eux.Les CALayers imbriqués ne détectent pas la transformation de perspective
Pour illustrer avec pseudo-code, si j'ai une couche avec une perspective appliquée comme ceci:
CATransform3D subLayerTransform = CATransform3DIdentity;
/* set perspective */
subLayerTransform.m34 = -0.002;
superLayer.sublayerTransform = subLayerTransform;
Ajouter, puis ajoutez une couche à elle comme ceci:
CALayer *sublayer = [CALayer layer];
sublayer.frame = layerFrame;
sublayer.contents = (id)[image CGImage];
[superLayer addSublayer: sublayer];
La perspective est appliquée comme prévu. Cependant, si je devais essayer de couches de nid plus
CALayer *sublayer = [CALayer layer];
[superLayer addSublayer: sublayer];
CALayer *nestedlayer = [CALayer layer];
nestedlayer.frame = layerFrame;
nestedlayer.contents = (id)[image CGImage];
[sublayer addSublayer: nestedlayer];
La couche imbriquée est plat lors d'une rotation. C'est comme si superLayer n'appliquait la transformation qu'aux couches qui se trouvent directement sous la hiérarchie des couches. Est-ce le cas? Ou est-ce que je fais quelque chose de mal?