【发布时间】:2014-10-19 07:09:43
【问题描述】:
在 CATransform3dRotate 之后更改 CALayer 的锚点会产生奇怪的结果。我认为问题是,anchorPoint 属性设置在图层的先前状态(无变换)而不是图层的当前状态(变换后)。
有没有办法改变一个CALayer当前状态的anchorPoint??
转换代码:
CATransform3D transform = CATransform3DIdentity;
transform.m34 = -(1.0/800.0);
videoPlayerView.layer.zPosition = 100;
videoPlayerView.layer.transform = CATransform3DRotate(transform, (30*M_PI)/180, 1.0f, 0.0f, 0.0f);
更改锚点的代码
if(videoPlayerView.layer.anchorPoint.x != 0.0)
{
videoPlayerView.layer.anchorPoint = CGPointMake(0.0, 0.5);
videoPlayerView.layer.position = CGPointMake(videoPlayerView.layer.frame.origin.x - videoPlayerView.layer.frame.size.width/2,videoPlayerView.layer.position.y);
}
基本上,我必须像翻书一样旋转图层。我已经在不使用 30 度变换的情况下完成了此操作,但我希望它看起来更 3D,因此沿 x 轴应用了 30 度变换。这样看起来这本书就放在桌子上。
为了旋转,设置锚点是必要的。如果没有,请另外提出建议...
【问题讨论】:
-
你能说一下你想达到什么目标吗?到底应该怎么看?
-
基本上,我必须像翻书一样旋转图层。我已经这样做了,但我希望它看起来更 3D,所以沿 x 轴应用了 30 度变换。所以看起来这本书是放在桌子上的。请检查已编辑的问题。
标签: ios core-animation calayer