2009-03-06 68 views
11

我试图缩小图像,改变图像,然后将其缩小回来。如何使用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"]; 

使得收缩,那么它完成时,我改变形象,并开始成长:

- (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"]; 
} 

这在模拟器上的伟大工程,但在设备上,收缩完成时,我获得了全尺寸,旧图像的闪光,然后增长的动画从新图像开始。

任何想法如何摆脱闪存?

(我试过“removedOnCompletion = NO”;并试图设置的AffineTransform等于第一完成后,按比例缩小的尺寸,但没有多少运气。)

知道的任何提示。

KB

编辑:

好极了!设置如下:

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

删除闪烁。谢谢,本!

回答

13

尝试设置动画的fillModekCAFillModeForwards。这应该使该项目保留在动画结束时,而不是之前。

+0

非常好! 设置以下内容: \t out.fillMode = kCAFillModeForwards; \t out.removedOnCompletion = NO; 删除了闪烁。谢谢,本! – KevinButler 2009-03-07 04:58:02

0

我试图在animationDidStop方法中创建另一个CAAnimation时遇到了同样的问题。我建议使用CAKeyframeAnimation。