2012-03-15 177 views
0

我想從UIImageView擴展一個類,這將無限旋轉宇宙圖像。所以我可以簡單地把這個圖像視圖作爲其他UI元素的背景視圖。無限旋轉圖像背景UIImageView

3個問題在這裏:

  1. 它是從UIImageview類擴展的正確途徑。
  2. 如何保持旋轉無限,並作爲背景,當把它放入其他視圖時,我不需要額外編寫代碼行。
  3. 我寫了一個粗略的原型,當我把它放到其他視圖中作爲背景時,這個視圖中的所有UI元素都隨圖像旋轉。

回答

2
  1. 擴展UIImageview類沒有任何錯誤。
  2. 創建旋轉動畫並設置重複開啓。
  3. 請勿在旋轉圖像上添加元素。 (在基本視圖中添加元素,在索引0處插入旋轉的imageview)。
+0

謝謝你,幫忙。我會檢查我的代碼的細節。 – icespace 2012-03-15 09:03:00

+0

@icespace歡迎:) – Vignesh 2012-03-15 09:03:43

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

它對我來說就像一個魅力。

+0

謝謝。你是對的,它像一個魅力。 8-) – icespace 2012-04-19 01:34:45

1

UIView Class Reference

UIImageView類被優化以繪製其圖像的顯示。 UIImageView不會調用drawRect:一個子類。如果您的子類需要自定義繪圖代碼,建議您使用UIView作爲基類。

目前,UIImageView子類做的工作,特別是如果他們不干擾繪圖代碼。如果未來的iOS更新會破壞您的子類,請不要抱怨蘋果。很容易編寫自己的UIView子類來顯示圖像。如果您已經有適當的圖形,可以考慮將它放在CALayercontents中,而不是實現UIView drawRect方法。


輪作通過改變UIView transform(其爲CGAffineTransform類型的)始終以最短路徑。這意味着270度的順時針旋轉是90度逆時針旋轉的動畫,360度的任何倍數都不會產生任何影響。如果您獲得視圖的圖層並且設置了動畫CALayer transform(其類型爲CATransform3D),則您可以罐頭獲得360度旋轉。請參閱Can I use CGAffineTransformMakeRotation to rotate a view more than 360 degrees?

爲了使動畫不斷重複,CAMediaTiming Protocol Reference建議將repeatCount設置爲HUGE_VALF

+0

謝謝你解釋。我複製了hieund的代碼(請參閱上面的註釋)。利用iOS提供的API總是正確的方式。再次感謝。 – icespace 2012-04-19 01:38:51