2013-05-03 39 views
0

我有一张卡通脸的图像来旋转它,就像摇头从左到右(如我们在听音乐时所做的一样)一段时间,如5- 7秒。所以,我在做以下事情:旋转到特定角度不起作用

-(void)rotation{ 

CABasicAnimation *rotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 
[rotate setFromValue:[NSNumber numberWithFloat:0.0]]; 
[rotate setToValue:[NSNumber numberWithFloat:45]]; 
[rotate setDuration:5.0]; 
[rotate setAutoreverses:YES]; 
[rotate setTimingFunction:[CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut]]; 

[[faceImage layer] addAnimation:rotate forKey:@"dangleFaceImage"]; 

} 

但是图像像球一样旋转!我认为我的代码根本不正确。我怎么能做那个轮换?

+0

曾听说过[radians](http://sv.wikipedia.org/wiki/Radian)?文件中提到所有角度都以弧度为单位(如“旋转角度'弧度”) – 2013-05-03 07:15:34

回答

-1

您将有设置图层的锚点的工作。将包含面部的图层的锚点放置在较低的中间底部。轮换将从这一点开始。然后它会出现头部正在从脖子上倾斜。

+0

首先了解他的问题的最后一行,然后投票。 – CodenameLambda1 2013-05-03 05:15:44

+0

我没有足够的声望投票给你!所以,如果有人投票赞成你,对不起。但是你明白了我的观点。但我不明白我该如何在代码中做到这一点。你能举个例子吗? – Leo 2013-05-03 05:45:20

+0

在CALayer.h中 anchorPoint - 定义图层边界矩形的锚点。动画。 @property CGPoint anchorPoint 可以说你有一个的CALayer作为头 headLayer.anchorPoint = CGPointMake(headLayer.bounds.size.width/2,headLayer.bounds.size.height); 这会将锚点降低到底部。 现在,如果你应用了旋转动画,那么中心就是这一点。 – CodenameLambda1 2013-05-03 07:02:16

2

旋转以弧度表示值,而非度数。

[rotate setToValue:[NSNumber numberWithFloat: 45*M_PI/180.]]; 
+0

非常感谢。但是问题是它像低位一样旋转移动到上位。但我需要将图像的上部位置移动到图像的较低位置! &也移动到一边而不是在两边! – Leo 2013-05-03 05:41:25

0

对于莱夫特赛德

CGAffineTransform transform = CGAffineTransformRotate(imgBg.transform, M_PI/-360); 
    imgBg.transform = transform; 

对于右侧

CGAffineTransform transform = CGAffineTransformRotate(imgBg.transform, M_PI/360); 
    imgBg.transform = transform; 
+0

在这里你可以调整你的角度 – 2013-05-03 05:24:33

0

试图通过使用旋转变换旋转。您必须先将图像设置为ImageView。假设它是faceImageView然后

faceImageView.transform = CGAffineTransformRotate(faceImageView.transform, angle); 

它将旋转到所需的角度:)

0

在CALayer.h anchorPoint - 定义层的边界矩形的锚点。动画。

@property CGPoint anchorPoint 

比方说你有一个的CALayer作为headLayer

headLayer.anchorPoint = CGPointMake(headLayer.bounds.size.width/2,headLayer.bounds.size.height); 

这会带来锚点以降低中期底部。

现在,如果你应用了旋转动画,那么中心就是这个点。