Я пытаюсь использовать CALayers для создания эффекта 3D-стиля в одном из моих приложений. Однако, похоже, что вложенные CALayers не имеют перспективы, применяемой к ним.Вложенные 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 применяет преобразование только к слоям, расположенным непосредственно под ним в иерархии слоев. Это так? Или я делаю что-то неправильно?