2010-09-28 6 views
0

Я понимаю, что CGAffineTransformMakeRotation может повернуть изображение, и CGAffineTransformMakeTranslation переводит изображение. Я также понимаю, что CGAffineTransformConcat может объединить две трансформации. Тем не менее, я не могу представить способ перемещения изображения на дуге, используя оба этих параметра. Я понимаю, что это скорее математический вопрос, но есть ли у кого-нибудь ссылку, на которую они могут указать?Перемещение UIImageView по дуге с использованием CGAffine

Edit:

[bezierPathWithArcCenter:radius:startAngle:endAngle:clockwise:] 

сделал трюк.

Ссылка: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIBezierPath_class/Reference/Reference.html#//apple_ref/occ/clm/UIBezierPath/bezierPathWithArcCenter:radius:startAngle:endAngle:clockwise:

+0

Вы пытаетесь повернуть изображение при его движении по дуге? –

+0

Да, это именно то, что я пытаюсь сделать. –

ответ

2

Используйте CAKeyframeAnimation с набором путей вместо незаметных значений.

CAKeyframeAnimation *a = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 
CGRect circleRect = CGRectMake(0,0,50,50); 
a.duration = 2.0; 
a.rotationMode = kCAAnimationRotateAuto; 
a.path = [UIBezierPath bezierPathWithOvalInRect:circleRect].CGPath; 
[imageView.layer addAnimation:a forKey:@"moveCircle"]; 
1

Поверните его вокруг центра окружности, соответствующей дуге.

Это будет включать в себя три этапа:

1) Перевести так, что центр вашей дуги перемещается в начало координат.
2) Поверните соответствующий угол.
3) Обратный перевод с шага 1.

Смежные вопросы