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 ответ
Решение
Что ж, похоже, что смена владельца является самой простой. Мне просто нужно изменить некоторые другие преобразования (не показано в посте), чтобы это работало.