【发布时间】:2013-08-06 02:24:35
【问题描述】:
我正在将 CALayer 用于交互式图书引擎,并希望围绕它的中心旋转 CALayer,但是当我将旋转变换(使用基于用户输入的角度)应用到 CALayer 时,它变得疯狂:图层以非常奇怪的方式拉伸和移动并消失。我要做的是
[CATransaction begin];
[CATransaction setValue: (id) kCFBooleanTrue forKey: kCATransactionDisableActions];
...
layer.transform = CATransform3DMakeRotation(angle, 0, 0, 1);
...
[CATransaction commit];
有趣的是,当我的角度是 M_PI 或 M_PI/2 时,或者它的比例变换一切正常,但是当它的旋转和任何其他角度层变得疯狂时。
有人知道发生了什么以及如何解决吗?
【问题讨论】:
-
CALayer 的原点在中心吗?如果没有,您需要先将原点转换为中心,进行旋转,然后再将其转换回来。
-
试试这个
layer.anchorPoint = CGPointMake(0.5, 0.5); -
您的图层是否属于视图?如果是这样,视图是否使用自动布局?自动布局系统将尝试设置视图的框架,如果您的视图被转换,这通常会导致奇怪的结果。
-
是的,我的原点在中心,我尝试强制使用建议的
layer.anchorPoint = CGPointMake(0.5, 0.5);,但没有任何改变。这不是视图层 - 我用 [CALayer 层] 创建它
标签: ios objective-c calayer quartz-graphics