如何在车速表中旋转图像?

时间:2009-09-15 19:55:03

标签: iphone core-animation

我正在使用此代码进行旋转动画:

CABasicAnimation *spinAnimation = [CABasicAnimation
                                   animationWithKeyPath:@"transform.rotation.z"];
spinAnimation.fromValue =[NSNumber numberWithFloat:0];
spinAnimation.toValue = [NSNumber numberWithFloat:3.30];
spinAnimation.duration =2;  
[imgArrow.layer addAnimation:spinAnimation forKey:@"spinAnimation"];

在此代码中,imageview的底点不固定。我想设置图像,使其从图像底部的固定点旋转(如速度计)。

你能帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

尝试这样的事情:

NSString *path = [[NSBundle mainBundle] pathForResource:@"arrow" ofType:@"png"];
UIImage *img = [UIImage imageWithContentsOfFile:path];
CGImageRef image = img.CGImage;
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSaveGState(context);

CGContextTranslateCTM(context, 365.0, 305);
CGContextRotateCTM(context, angle); 
touchRect = CGRectMake(-10.0, -5.0, img.size.width, img.size.height); // (-10.0, -5.0) - arrow's rotation center
CGContextDrawImage(context, touchRect, image);  

CGContextRestoreGState(context);

答案 1 :(得分:1)

这个问题现在已经很老了,但答案与锚点有关。您只需将图像视图的锚点设置为底部中心即可。这是一个显示不同锚点的指南。 alt text

因此,您可以将图层的锚点设置为0.5,1.0,如下所示:

[[imgArrow layer] setAnchorPoint:CGPointMake(0.5, 1.0)];

答案 2 :(得分:0)

要从定位点旋转箭头,请使用以下代码:

text()