2012-04-15 7 views
5

私のiOS 5アプリでは、イメージとして赤いorbを持つカスタムUIButtonがあります。ボタンをタップすると、オーブが赤と緑の間でパルス/フェージングを開始するようにしたいと思います。またコアアニメーションを使用したループアニメーションリバーシブルアニメーション

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

しかし、私は(私が停止するように指示されるまで、ウェル)永遠に継続してアニメーションを希望して:私は赤と緑の画像の両方を持っているし、正常に次のコードを使用して2つの間の相互disolveすることができますアニメーションが反転してループするようにします。言い換えれば、赤 - >緑 - >赤を消してから、繰り返します。

上記のアニメーションブロックを無限ループに入れてみました(フェージングが赤 - >緑か緑 - >赤かどうかを判断するロジックがあります)が、アプリ全体をロックアップします。

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

ご協力いただければ幸いです。

答えて

23

はい、これを行うには、CABasicAnimationのようにしてください。そのトリックは、最も重要なメソッドの多くがCABasicAnimation Class Reference、またはそのスーパークラスにないことです。 CABasicAnimationはCAMediaTimingというプロトコルを実装しています。 CAMediaTiming Protocol Referenceを参照してください。

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

分数であることがあります。 repeatCountが0の場合は無視されます。デフォルトは0です。repeatDurationとrepeatCountの両方を指定した場合の動作は未定義です。

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

あなたはそこから作業できますか?

+0

ありがとうございます - これは完全に機能します!非常に明確にも説明されて:) – Skoota

関連する問題