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;
点滅を削除しました。ありがとう、ベン!
解決
アニメーションの fillMode
を kCAFillModeForwards
に設定してみてください。これにより、アイテムは以前ではなく、アニメーションの最後に残されます。
他のヒント
animationDidStopメソッドで別のCAAnimationを作成しようとしたときに、同じ問題が発生しました。 CAKeyframeAnimationを使用することをお勧めします。
所属していません StackOverflow