iPhone UIImageViewでスケールアニメーションをチェーンするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/617992

質問

画像を縮小し、画像を変更してから、拡大し直そうとしています。

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; 

点滅を削除しました。ありがとう、ベン!

役に立ちましたか?

解決

アニメーションの fillMode kCAFillModeForwards に設定してみてください。これにより、アイテムは以前ではなく、アニメーションの最後に残されます。

他のヒント

animationDidStopメソッドで別のCAAnimationを作成しようとしたときに、同じ問題が発生しました。 CAKeyframeAnimationを使用することをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top