旋转到特定角度不起作用

时间:2013-05-03 05:00:27

标签: iphone ios core-animation

我有一张卡通脸的图像可以旋转它,就像从左到右摇动一点点(就像我们听音乐时那样)持续一段特定的持续时间,比如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"];

}

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

5 个答案:

答案 0 :(得分:2)

旋转取弧度值,而不是度。

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

答案 1 :(得分:0)

Leftside

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

右侧

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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

@property CGPoint anchorPoint

假设你有一个calayer作为headLayer

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

这会使锚点降到中间底部。

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

答案 4 :(得分:-1)

您将负责设置图层的锚点。将包含面的图层的锚点放在下中间底部。然后从这一点开始旋转。然后看起来头部正从颈部倾斜。