У меня возникает проблема, когда я создаю явную анимацию, чтобы изменить значение пути CAShapeLayer с эллипса на прямоугольник.
В моем контроллере холста я устанавливаю базовый CAShapeLayer и добавляю его вслой корневого представления:
CAShapeLayer *aLayer;
aLayer = [CAShapeLayer layer];
aLayer.frame = CGRectMake(100, 100, 100, 100);
aLayer.path = CGPathCreateWithEllipseInRect(aLayer.frame, nil);
aLayer.lineWidth = 10.0f;
aLayer.strokeColor = [UIColor blackColor].CGColor;
aLayer.fillColor = [UIColor clearColor].CGColor;
[self.view.layer addSublayer:aLayer];
Затем, когда я анимирую путь, я получаю странный сбой / мерцание в последних нескольких кадрах анимации, когда фигура становится прямоугольной, и в первых нескольких кадрах, когда онаоживляет от того, чтобы быть прямоугольником.Анимация настроена следующим образом:
CGPathRef newPath = CGPathCreateWithRect(aLayer.frame, nil);
[CATransaction lock];
[CATransaction begin];
[CATransaction setAnimationDuration:5.0f];
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"path"];
ba.autoreverses = YES;
ba.fillMode = kCAFillModeForwards;
ba.repeatCount = HUGE_VALF;
ba.fromValue = (id)aLayer.path;
ba.toValue = (__bridge id)newPath;
[aLayer addAnimation:ba forKey:@"animatePath"];
[CATransaction commit];
[CATransaction unlock];
Я пробовал много разных вещей, таких как блокировка / разблокировка транзакции CAT, игра с различными режимами заполнения и т.д ...
Вот изображениеглюк: http://www.postfl.com/outgoing/renderingglitch.png
Видео того, что я испытываю, можно найти здесь: http://vimeo.com/37720876