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"];

}

但图像像球一样旋转!我认为我的代码根本不正确。我怎样才能做到这一点?

4

5 回答 5

2

旋转以弧度为单位,而不是度数。

[rotate setToValue:[NSNumber numberWithFloat: 45*M_PI/180.]];
于 2013-05-03T05:03:59.460 回答
0

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

@property CGPoint anchorPoint

假设你有一个 calayer 作为 headLayer

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

这会将锚点带到较低的中底。

现在,如果您应用旋转动画,那么中心将是其中的这一点。

于 2013-05-03T07:06:37.533 回答
0

对于左侧

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

对于右侧

    CGAffineTransform transform = CGAffineTransformRotate(imgBg.transform, M_PI/360);
    imgBg.transform = transform;
于 2013-05-03T05:18:32.950 回答
0

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

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

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

于 2013-05-03T05:22:33.163 回答
-1

您将需要设置图层的锚点。将包含面的图层的锚点放置在中下部。然后将从该点开始旋转。然后看起来头部从颈部倾斜。

于 2013-05-03T05:04:21.500 回答