iPhone, как мне повернуть UIImageView вокруг точки, используя Core Animation и CATransform3D? - PullRequest
2 голосов
/ 28 июля 2010

Это то, что я хочу сделать:

(1) (2) 
|    /
|   /
|  /
| /
|/
*
(3)

Я хочу переместить UIImageView, представленный тактовой меткой (ширина: 9 пикселей, высота 73 пикселя), из положения (1) в положение (2) вокругточка (3), которая является одним концом изображения.Я пытался установить anchorpoint на (0,0) или установить центр изображения в точку (517,177), которая является * (3) местоположением на экране iPad, но у меня ничего не получилось:

Мой градус ToRadiansмакрос определяется следующим образом:

#define degreesToRadian(x) (M_PI * (x) / 180.0)

/ * kmPointer - это UIImageView * /

NSValue *value = nil;
CABasicAnimation *animation = nil; 
CATransform3D transform;
kmPointer.layer.anchorPoint = CGPointMake(0, 0);
[kmPointer.layer removeAllAnimations]; 
animation = [CABasicAnimation animationWithKeyPath:@"transform"]; 
transform = CATransform3DMakeRotation(degreesToRadian(30), 0.0f, 0.0f, 1.0f); 
value = [NSValue valueWithCATransform3D:transform]; 
[animation setToValue:value]; 
transform = CATransform3DMakeRotation(0.0f, 0.0f, 0.0f, 1.0f); 
value = [NSValue valueWithCATransform3D:transform]; 
[animation setFromValue:value]; 
[animation setAutoreverses:NO]; 
[animation setDuration:1.0f]; 
[animation setRepeatCount:1]; 
[kmPointer.layer addAnimation:animation forKey:nil];

Как заставить указатель вращаться вокруг звезды, отмеченной (3)

1 Ответ

4 голосов
/ 29 июля 2010

Документы Apple, которые показывают изображение точки привязки, предназначены для OSX.Вот как это выглядит для iOS: alt text http://img.skitch.com/20100728-8ggje4xr8jixa7c2gam96npc9g.png

Поэтому попробуйте установить точку привязки на 0.0, 1.0.

...