开发者

Moving a UIImageView on an arc using CGAffine

I understand that CGAffineTransformMakeRotation can rotate an image, and CGAffineTransformMakeTranslation translates an image. I also understand CGAffineTransformConcat can merge two transformations. However, I cannot seem to figure out a way to move an image on an arc using both of these. I understand this is more a mathematical question but does anyone have a reference they can point me to?

Edit:

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

did the trick.

Reference: http://developer.apple开发者_运维问答.com/library/ios/#documentation/UIKit/Reference/UIBezierPath_class/Reference/Reference.html#//apple_ref/occ/clm/UIBezierPath/bezierPathWithArcCenter:radius:startAngle:endAngle:clockwise:


Use a CAKeyframeAnimation with the path set instead of discreet values.

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


Rotate it about the center of the circle corresponding to the arc.

This will involve three steps:

1) Translate so that the center of your arc moves to the origin.
2) Rotate through the appropriate angle.
3) Reverse the translation from step 1.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜