CAShapeLayer Animating Path Glitches / Flickers (da elipse para a direita e para trás)

Estou com um problema ao criar uma animação explícita para alterar o valor do caminho de um CAShapeLayer de uma elipse para uma re

No meu controlador de tela, configurei um CAShapeLayer básico e o adicionei à camada da visualização raiz:

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];

Então, quando animar o caminho, recebo uma falha / tremulação estranha nos últimos quadros da animação quando a forma se torna correta, e nos primeiros quadros quando ela se afasta de ser correta. A animação está configurada da seguinte forma:

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];

Tentei muitas coisas diferentes, como bloquear / desbloquear a transação CAT, jogar com vários modos de preenchimento, etc ...

Aqui está uma imagem da falha:http: //www.postfl.com/outgoing/renderingglitch.pn

Um vídeo do que estou experimentando pode ser encontrado aqui:http: //vimeo.com/3772087

questionAnswers(4)

yourAnswerToTheQuestion