Я анимирую значение пути заполненного, но не обведенного CAShapeLayer, и я хотел бы сделать его анимацию более плавной.

Ладно, я просто повторю еще раз:

Я анимирую значение пути заполненного, но не обведенного CAShapeLayer, и я хотел бы сделать его анимацию более плавной. Вот основной код анимации:

CABasicAnimation * pathAnimation = [CABasicAnimation animationWithKeyPath:@"path"];
        pathAnimation.toValue = (id)targetPath.CGPath;
        pathAnimation.fromValue = (id)shapePath.CGPath;
        //pathAnimation.fromValue = (id)((CAShapeLayer*)[currentShapeLayers objectForKey:key]).path;
        pathAnimation.repeatCount = 0;
        pathAnimation.duration = animationTime;
        pathAnimation.autoreverses = NO;
        [[currentShapeLayers objectForKey:key] addAnimation:pathAnimation forKey:@"animatePath"];

Эх, нормально работает. Но дорожки имеют странную форму и динамичную форму. Я попытался убедиться, что количество точек всегда одинаково между путями, и это помогает. Но я все еще получаю анимацию частей путей, которые я не хочу анимировать. На самом деле то, что я хотел бы сделать, это сохранить часть пути статической, в то время как остальная часть пути вырастает из одной стороны или сжимается обратно в нее или, в некоторых случаях, отделяется от основного пути в отдельный подпуть.

Я думал найти промежуточные этапы пути и сначала анимировать их, а затем закончить анимацию оттуда, но я чувствую, что может быть другое решение.


person jedbeetle    schedule 21.07.2013    source источник


Ответы (1)


Я нашел решение этой проблемы . Я не уверен, что это самое эффективное решение, так как оно включает много перерисовок, но позволяет в значительной степени контролировать поведение анимации.

person jedbeetle    schedule 01.08.2013