2009-03-06 29 views
11

Tôi đang cố gắng chia tỷ lệ hình ảnh, thay đổi hình ảnh, sau đó mở rộng hình ảnh.Tôi làm cách nào để tạo chuỗi hoạt ảnh theo tỷ lệ bằng iPhone UIImageView?

CABasicAnimation* shrink = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
shrink.toValue = [NSNumber numberWithDouble:0]; 
shrink.duration = 1; 
    shrink.delegate = self; 
    [myImageView.layer addAnimation:shrink forKey:@"shrink"]; 

làm cho co, sau đó khi nó hoàn thành, tôi thay đổi hình ảnh, và bắt đầu nuôi:

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag 
{ 
    myImageView.image = [images objectAtIndex:image]; 
CABasicAnimation* grow = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
grow.toValue = CGAffineTransformMakeScale(1,1); 
    grow.delegate = self; 
grow.duration = 1; 
[myImageView.layer addAnimation:grow forKey:@"grow"]; 
} 

này hoạt động tốt trên giả lập, nhưng trên thiết bị, khi co hoàn tất, Tôi nhận được một flash của hình ảnh cũ, kích thước đầy đủ, sau đó các hình ảnh động phát triển bắt đầu với hình ảnh mới.

Bất kỳ ý tưởng nào về cách loại bỏ flash đó?

(Tôi đã thử "removedOnCompletion = NO;" và cố gắng thiết lập các affineTransform bằng với kích thước thu nhỏ lại sau khi hoàn thành đầu tiên, nhưng không có nhiều may mắn.)

Bất cứ lời khuyên đánh giá cao.

kb

Edit:

Tuyệt vời! Đặt các cài đặt sau:

shrink.fillMode = kCAFillModeForwards; 
shrink.removedOnCompletion = NO; 

Đã xóa nhấp nháy. Cảm ơn, Ben!

Trả lời

13

Thử đặt hoạt ảnh của bạn là fillMode thành kCAFillModeForwards. Điều đó nên để lại mục như nó đã được ở phần cuối của hình ảnh động, chứ không phải trước đây.

+0

Tuyệt vời! Đặt các mục sau: \t out.fillMode = kCAFillModeForwards; \t out.removedOnCompletion = NO; Đã xóa nhấp nháy. Cảm ơn, Ben! – KevinButler

0

Tôi đã gặp vấn đề tương tự khi tôi cố gắng tạo một CAAnimation khác trong phương thức animationDidStop. Tôi đề nghị sử dụng CAKeyframeAnimation.

Các vấn đề liên quan