2012-03-15 11 views
0

私はユニバース画像を無限に回転させるクラスをUIImageViewから拡張したいと考えています。したがって、この画像ビューを他のUIエレメントの背景ビューとして置くことができます。ここ無限回転画像の背景UIImageView

3質問:

  1. はそれがUIImageviewクラスから拡張する正しい方法です。
  2. どのように無限に回転し続けると、背景として、他のビューに配置すると、余分なコード行を書く必要はありません。
  3. ラフなプロトタイプを書きました。別のビューにバックグラウンドで配置すると、このビューのすべてのUI要素がイメージと共に回転しています。

答えて

2
  1. UIImageviewクラスの拡張には何も問題ありません。
  2. 回転アニメーションを作成し、繰り返しをオンに設定します。
  3. 回転イメージに要素を追加しないでください。 (ベースビューで要素を追加します。回転イメージビューをインデックス0に挿入します)。
+0

ありがとう、それは助けます。私は自分のコードの詳細をチェックします。 – icespace

+0

@icespaceようこそ – Vignesh

3

あなたはUIImageViewを持っていて、その上に画像を割り当て、myImgViewという名前を持つとします。 viewDidLoadでコードを以下のように追加します。

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
[UIView setAnimationRepeatCount:MAXFLOAT]; 
myImgView.transform = CGAffineTransformMakeRotation(M_PI); 
[UIView commitAnimations]; 

これは私の魅力のように機能します。 UIView Class Referenceから

+0

ありがとうございます。あなたは正しい、それは魅力のように働く。 8-) – icespace

1

UIImageViewクラスは、ディスプレイにその画像を描画するために最適化されています。 UIImageViewはdrawRect:サブクラスを呼び出しません。サブクラスにカスタム描画コードが必要な場合は、UIViewを基本クラスとして使用することをお勧めします。

現在、図面コードに干渉しない場合、特にUIImageViewサブクラスが機能します。将来のiOSアップデートがあなたのサブクラスを破るならば、アップルに不平を言ってはいけません。画像を表示するには、独自のUIViewサブクラスを作成するだけで十分です。適切なグラフィックスを既にお持ちの場合は、UIView drawRectメソッドを実装する代わりに、CALayercontentsに配置することを検討してください。 (タイプCGAffineTransformである)UIView transformを変化させることにより


回転は常に最短経路を取ります。つまり、270度の時計回りの回転は90度の反時計回りの回転としてアニメーションされ、360度の倍数は何も行いません。 ビューのレイヤーを取得してCALayer transformCATransform3D)のアニメーションを作成すると、360度の回転を得ることができます。 Can I use CGAffineTransformMakeRotation to rotate a view more than 360 degrees?

CAMediaTiming Protocol Referenceは、アニメーションを無限に繰り返すには、repeatCountHUGE_VALFに設定することをお勧めします。

+0

ありがとうございます。 hieundからコードをコピーしました(上記のコメントを参照)。iOS提供のAPIを利用することは常に正しい方法です。再度、感謝します。 – icespace