6

私のiOS5アプリには、UIButton画像として赤いオーブを持つカスタムがあります。ボタンをタップすると、オーブが赤と緑の間でパルス/フェードし始めます。私は赤と緑の両方の画像を持っており、次のコードを使用して2つの間で正常に相互溶解できます。

CABasicAnimation *imageSwitchAnimation = [CABasicAnimation animationWithKeyPath:@"contents"];       
imageSwitchAnimation.fromValue = (id)[UIImage imageNamed:@"red.png"].CGImage;
imageSwitchAnimation.toValue = (id)[UIImage imageNamed:@"green.png"].CGImage;
imageSwitchAnimation.duration = 1.5f;        
[self.button.imageView.layer addAnimation:imageSwitchAnimation forKey:@"animateContents"];

ただし、アニメーションを永久に(停止するように指示するまで)継続し、アニメーションを反転してループさせたいと思います。つまり、赤->緑->赤をフェードしてから繰り返します。

上記のアニメーションブロックを無限ループに入れてみました(フェードを赤->緑または緑->赤のどちらにするかを決定するロジックとともに)が、これはアプリ全体をロックするだけです。

他のソリューションはCocos2dを使用しているようですが、これはアプリで必要な唯一のアニメーションであるため、かなり重いようです(したがって、絶対に必要でない限り、このようなフレームワークは使用したくありません)。

どんな助けでも大歓迎です。

4

1 に答える 1

26

はい、これは内で行うことができますCABasicAnimation。秘訣は、その最も重要なメソッドの多くがCABasicAnimationクラスリファレンスにないこと、またはそのスーパークラスにさえないことです。CABasicAnimationは、と呼ばれるプロトコルを実装しますCAMediaTimingCAMediaTimingプロトコルリファレンスを参照してください。

特に2つのプロパティについて知りたい:autoreversesrepeatCount。どちらも自明ですが、無限の繰り返しが必要な場合はどうなりますか?のエントリからrepeatCount

分数である可能性があります。repeatCountが0の場合、無視されます。デフォルトは0です。repeatDurationとrepeatCountの両方が指定されている場合、動作は未定義です。

このプロパティをHUGE_VALFに設定すると、アニメーションが永久に繰り返されます。

そこから解決できますか?

于 2012-04-15T10:53:32.953 に答える