В приложении для iPad я хочу переместить слой против часовой стрелки вдоль дуги, которая имеет центральную точку (768, 512) и радиус 512. Я хочу, чтобы он начинался в 12 часов (то есть сверху правый угол экрана) и закончить в 6 часов (нижний правый угол).
После долгих попыток я получил код, работающий
CGPoint origin = logo.layer.position;
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAnimation.calculationMode = kCAAnimationPaced;
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = YES;
CGMutablePathRef curvedPath = CGPathCreateMutable();
CGPathMoveToPoint(curvedPath, NULL, origin.x, origin.y);
CGPathAddArc(curvedPath, NULL, 768, 512, 512, -M_PI_2, M_PI_2, YES);
pathAnimation.path = curvedPath;
CGPathRelease(curvedPath);
pathAnimation.duration = 2;
[logo.layer addAnimation:pathAnimation forKey:@"curve"];
Но проблема в том, что я не могу понять параметры начального и конечного угла. Почему я должен использовать -M_PI_2 и M_PI_2 соответственно и установить по часовой стрелке значение YES?
Я думаю, что я перемещаю объект от 90 градусов до 270 градусов против часовой стрелки, поэтому код должен быть
CGPathAddArc(curvedPath, NULL, 768, 512, 512, -M_PI_2, M_PI_2, YES);
Возможно, я ошибался в нескольких местах и случайно получил правильный результат.
Пожалуйста, исправьте меня и помогите мне понять два угловых параметра:
StartAngle
The angle (in radians) from the horizontal that determines the starting point of the arc.
endAngle
The angle (in radians) from the horizontal that determines the ending point of the arc.
Спасибо
Leo