CALayer sublayerTransform(CATransform3D) - 如何移动“相机”?

时间:2012-12-15 16:46:06

标签: core-animation transform calayer catransform3d catransform3drotate

尝试A

此代码

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

给出了这个结果

A

红框是图层的背景色

尝试B

此代码

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;

给出了这个结果

B

红框是图层的背景色

那有什么不对?

在"尝试A"的渲染示例中从左中心看到,因此从错误的角度看到折叠(左折叠比右折叠略薄)

通过在x轴上进行平移,如在"尝试B",我能够正确渲染它,但是又出现了另一个错误:内容现在超出界限(红色矩形是边界)。

如何从中间拍摄相机?

1 个答案:

答案 0 :(得分:-1)

好吧,似乎更改锚点是最简单的。我只需要更改其他一些转换(不在帖子中显示)以使其正常工作。