使用任意起点围绕圆圈制作动画视图

时间:2011-01-26 19:34:55

标签: iphone ipad ios core-animation core-graphics

我正在尝试围绕椭圆(旋转木马风格)旋转一堆CALayers,如下所示:

CGMutablePathRef path = CGPathCreateMutable();

CGAffineTransform squash = CGAffineTransformMakeScale(1.1, 0.8);
CGAffineTransform squashInv = CGAffineTransformInvert(squash);
CGPoint c = CGPointApplyAffineTransform(centre, squashInv);

CGPathAddArc(path, &squash, c.x, c.y, radius, 2.0*M_PI, 0.0, YES);

CAKeyframeAnimation *pathAni = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAni.path = path;
pathAni.duration = 14.0;
pathAni.calculationMode = kCAAnimationPaced;
CFRelease(path);

除了每个视图总是在3点位置开始动画外,效果很好。现在,我正试图绕着椭圆的任意点开始每个视图,并想要一些建议。

(我已尝试过CGMoveArcToPoint并试图在路径上使用CGAffineTransformMakeRotate旋转圆圈,但无效)

感谢您的时间

1 个答案:

答案 0 :(得分:1)

您是否尝试过timeOffset属性(CAMediaTiming协议的一部分)?

  

时序协议提供了手段   开始动画一定   持续时间的秒数   使用两个属性:beginTime和   时间偏移。 beginTime指定   进入的秒数   动画应该开始的持续时间   并缩放到时空   动画的图层。 timeOffset   指定一个额外的偏移,但是   在当地活跃时间表示。都   将值组合起来确定   最终的起始偏移。