Я пытаюсь анимировать вид из центра экрана в верхний левый угол в режиме спирального типа. Вот что я делаю:анимация спирального пути с использованием CGMutablePathRef
CGMutablePathRef curvedPath = CGPathCreateMutable();
CGPathMoveToPoint(curvedPath, NULL, viewOrigin.x, viewOrigin.y);
controlX1 = viewOrigin.x + halfScreenWidth*0.3;
controlY1 = viewOrigin.y + halfScreenHeight*0.1;
controlX2 = viewOrigin.x - halfScreenWidth*0.05;
controlY2 = viewOrigin.y + halfScreenHeight*0.5;
controlX3 = viewOrigin.x - halfScreenWidth*0.4;
controlY3 = viewOrigin.y;
rndX1 = viewOrigin.x + halfScreenWidth*.1;
rndX2 = viewOrigin.x - halfScreenWidth*.40;
rndY1 = viewOrigin.y + halfScreenHeight*.10;
rndY2 = viewOrigin.y + halfScreenHeight*.35;
}
CGPathAddQuadCurveToPoint(curvedPath, NULL, controlX1, controlY1, rndX1, rndY1);
CGPathAddQuadCurveToPoint(curvedPath, NULL, controlX2, controlY2, rndX2, rndY2);
CGPathAddQuadCurveToPoint(curvedPath, NULL, controlX3, controlY3, endPoint.x, endPoint.y);
pathAnimation.path = curvedPath;
CGPathRelease(curvedPath);
CAAnimationGroup *group = [CAAnimationGroup animation];
group.fillMode = kCAFillModeForwards;
[group setAnimations:[NSArray arrayWithObjects: pathAnimation, nil]];
group.duration = 3.0f;
group.delegate = self;
[group setValue:self.theView forKey:@"imageViewBeingAnimated"];
В представлении перемещается в каждой точке на кривой, но это не так гладко, и не очень соблазнительная либо. Он просто перемещается в значительной степени по прямой линии в каждую точку. Почему не путь изогнут? Я использую this в качестве ссылки.
насчет остальной части анимации по ключевым кадрам? –
Я не уверен, что это релевантно, но я добавил его выше. – soleil
Я запустил код, который вы указали выше (но мне пришлось заполнить некоторые из моих собственных значений для endPath, viewOrigin, pathAnimation, theView и т. Д.). Он идет по пути, как я ожидал бы этого. Я предлагаю вам установить путь к слою с гладкими фигурами, чтобы увидеть, действительно ли путь является тем, что вы думаете. В противном случае вам нужно предоставить дополнительную информацию, чтобы другие могли воспроизвести проблему. –