Анимировать вид вокруг круга с произвольной начальной точкой - PullRequest
3 голосов
/ 26 января 2011

Я пытаюсь вращать группу 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 Ответ

1 голос
/ 27 января 2011

Пробовали ли вы свойство timeOffset (часть протокола CAMediaTiming)?

Протокол синхронизации позволяет запускать анимацию через определенное количество секунд, используя двасвойства: beginTime и timeOffset.Параметр beginTime указывает количество секунд, в течение которых анимация должна начинаться, и масштабируется до временного пространства слоя анимации.TimeOffset указывает дополнительное смещение, но указывается в местном активном времени.Оба значения объединяются для определения окончательного начального смещения.

...