我正在尝试围绕椭圆(旋转木马风格)旋转一堆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旋转圆圈,但无效)
感谢您的时间
答案 0 :(得分:1)
您是否尝试过timeOffset
属性(CAMediaTiming
协议的一部分)?
时序协议提供了手段 开始动画一定 持续时间的秒数 使用两个属性:beginTime和 时间偏移。 beginTime指定 进入的秒数 动画应该开始的持续时间 并缩放到时空 动画的图层。 timeOffset 指定一个额外的偏移,但是 在当地活跃时间表示。都 将值组合起来确定 最终的起始偏移。