Tôi đang gặp sự cố khi tôi tạo hoạt ảnh rõ ràng để thay đổi giá trị của đường dẫn của CAShapeLayer từ hình elip thành trực tràng.CAShapeLayer Đường dẫn hoạt hình ổn định/nhấp nháy (Từ Ellipse đến Rect và ngược lại)
Trong vải điều khiển tôi thiết lập của tôi một CAShapeLayer cơ bản và thêm nó vào lớp quan điểm gốc của:
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];
Sau đó, khi tôi làm động con đường tôi nhận được một trục trặc lạ/nhấp nháy trong vài khung hình cuối cùng của hoạt hình khi hình dạng trở thành một rect, và trong vài khung hình đầu tiên khi nó hoạt hình ra khỏi một rect. Các hình ảnh động được thiết lập như sau:
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];
Tôi đã thử nhiều thứ khác nhau như khóa/mở khóa CATransaction, chơi với chế độ fill khác nhau, vv ...
Dưới đây là một hình ảnh của trục trặc: http://www.postfl.com/outgoing/renderingglitch.png
một đoạn video về những gì tôi đang trải qua có thể được tìm thấy ở đây: http://vimeo.com/37720876
Giữa câu trả lời của bạn và câu trả lời tôi đăng từ David Duncan, tôi có cảm giác khá tốt về những gì đang diễn ra. Hy vọng rằng các đường dẫn animatable tài sản được tốt hơn trong phiên bản tương lai. –
Nếu bạn làm việc bằng cách sử dụng phương pháp hình chữ nhật vòng cung, hãy đăng nó ở đây! – jrturton
Tôi không biết nếu bạn đã làm việc này, hoặc nhìn thấy bất kỳ câu trả lời tốt kể từ khi bài đăng này được thực hiện. Tôi bắt đầu làm việc trên một vòng tròn chung cho hoạt hình đa giác và hiện đang hoạt động cho vòng kết nối thành hoạt ảnh vuông. Tôi đã đăng mã đó làm câu trả lời cho câu hỏi này, http://stackoverflow.com/questions/28437014/animating-between-two-bezier-path-shapes/28448397#28448397 – rdelmar