Как повернуть изображение в спидометре? - PullRequest
1 голос
/ 15 сентября 2009

Я использую этот код для анимации поворота:

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

В этом коде нижняя точка изображения не зафиксирована. Я хочу настроить изображение таким образом, чтобы оно вращалось с фиксированной точки внизу изображения (например, спидометр).

Можете ли вы помочь мне с этим?

Ответы [ 3 ]

1 голос
/ 09 ноября 2010

Этот вопрос довольно стар, но ответ должен делать с узловой точкой. Вам просто нужно установить опорную точку, чтобы изображение было в центре снизу. Вот руководство, чтобы показать различные точки привязки. alt text

Таким образом, вы бы установили опорную точку вашего слоя на 0,5, 1,0 следующим образом:

[[imgArrow layer] setAnchorPoint:CGPointMake(0.5, 1.0)];
1 голос
/ 16 сентября 2009

Попробуйте что-то вроде этого:

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);
0 голосов
/ 29 сентября 2015

Для поворота стрелки от точки привязки используйте этот код:

 self.button.layer.anchorPoint = CGPointMake(self.button.layer.anchorPoint.x, self.button.layer.anchorPoint.y*2);

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5f];
[self.button setTransform: CGAffineTransformMakeRotation((M_PI / 180) * -40.0579987)];
[UIView commitAnimations];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...