CALayer sublayerTransform (CATransform3D) - как мне переместить "камеру"?

Попытка А

этот код

CATransform3D perspectiveTransform = CATransform3DIdentity;
perspectiveTransform.m34 = -1.0 / 1000.0;
perspectiveTransform = CATransform3DRotate(perspectiveTransform, angle / 2.0, 0.0, 1.0, 0.0);
self.sublayerTransform = perspectiveTransform;

дает этот результат

Красная рамка - это цвет фона слоя

Попытка Б

Этот код

CATransform3D perspectiveTransform = CATransform3DIdentity;
perspectiveTransform.m34 = -1.0 / 1000.0;
// following line is added 
perspectiveTransform = CATransform3DTranslate(perspectiveTransform, -width / 2.0, 0, 0);
perspectiveTransform = CATransform3DRotate(perspectiveTransform, angle / 2.0, 0.0, 1.0, 0.0);
self.sublayerTransform = perspectiveTransform;

дает этот результат

В

Красная рамка - это цвет фона слоя

Так что не так?

В представленном примере из "Попытки A" видно из левого центра, и поэтому складка видна под неправильным углом (левая складка становится немного более тонкой, чем правая складка)

Переведя его на ось x, как в "Попытке B", я могу правильно отобразить его, но затем возникает другая ошибка: содержимое выходит за границы (красный прямоугольник - это границы).

Как я могу сделать камеру посередине?

1 ответ

Решение

Что ж, похоже, что смена владельца является самой простой. Мне просто нужно изменить некоторые другие преобразования (не показано в посте), чтобы это работало.

Другие вопросы по тегам