Перемещение UIImageView по дуге с использованием CGAffine - PullRequest
0 голосов
/ 29 сентября 2010

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

Редактировать:

 [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:

Ответы [ 2 ]

2 голосов
/ 29 сентября 2010

Используйте 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 голос
/ 29 сентября 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...