1

简而言之,我打算在它的 y 轴(左边缘)旁边旋转一个全屏大小的视图(绑定大小:320,460)。

我使用下面的代码通过 CAAnimation 实现了旋转:

CATransform3D transform = CATransform3DMakeRotation(M_PI_2, 0, 1, 0);
CGPoint origPoint = self.view.center;

//Set anchor Point
self.view.layer.anchorPoint = CGPointMake(0, 0.5);
//Set center point
[self.view setCenter: origPoint];

transform.m34 = 1.0/8000.0;
transform.m14 = -0.0015; 
CABasicAnimation *animRotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
[animRotate setFromValue:[NSValue valueWithCATransform3D:transform]];
[animRotate setDuration:4.0];
[self.view.layer addAnimation:animRotate forKey:nil];

所以我的问题是:如何将旋转轴设置为该视图的左边缘?

非常感谢。

我通过这个有用的博客参考了锚点

4

2 回答 2

0

调整锚点时,您似乎需要调整位置。请参阅此之前的帖子:

更改我的 CALayer 的锚点会移动视图

该帖子中的链接是旧的,新链接在这里: https ://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreAnimation_guide/CoreAnimationBasics/CoreAnimationBasics.html#//apple_ref/doc/uid /TP40004514-CH2-SW3

看起来关键句在“Anchor Points Affect Geometric Manipulations”下,即“位置属性始终相对于图层的锚点指定”。

于 2013-02-05T19:07:46.657 回答
0

我终于弄清楚了为什么我在这个动画中“无法设置旋转轴”:

在仔细检查了图层的边界和大小的返回值后,我发现这是因为viewWillAppear应用程序无法检索实际框架或边界大小的方法(高度或宽度都会返回0)。

当我将问题中所述的相同动画代码放入 or 之类的方法中viewDidAppearviewDidLoad,我可以自由设置anchorPoint将 x 或 y 作为动画的旋转轴。

于 2013-02-12T10:31:58.407 回答