В приложении 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.
Спасибо
Лео