我想從UIImageView
擴展一個類,這將無限旋轉宇宙圖像。所以我可以簡單地把這個圖像視圖作爲其他UI元素的背景視圖。無限旋轉圖像背景UIImageView
3個問題在這裏:
- 它是從
UIImageview
類擴展的正確途徑。 - 如何保持旋轉無限,並作爲背景,當把它放入其他視圖時,我不需要額外編寫代碼行。
- 我寫了一個粗略的原型,當我把它放到其他視圖中作爲背景時,這個視圖中的所有UI元素都隨圖像旋轉。
我想從UIImageView
擴展一個類,這將無限旋轉宇宙圖像。所以我可以簡單地把這個圖像視圖作爲其他UI元素的背景視圖。無限旋轉圖像背景UIImageView
3個問題在這裏:
UIImageview
類擴展的正確途徑。假設您有一個UIImageView併爲其分配一個圖像並命名爲myImgView。在viewDidLoad上添加你的代碼如下:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationRepeatCount:MAXFLOAT];
myImgView.transform = CGAffineTransformMakeRotation(M_PI);
[UIView commitAnimations];
它對我來說就像一個魅力。
謝謝。你是對的,它像一個魅力。 8-) – icespace 2012-04-19 01:34:45
UIImageView類被優化以繪製其圖像的顯示。 UIImageView不會調用drawRect:一個子類。如果您的子類需要自定義繪圖代碼,建議您使用UIView作爲基類。
目前,UIImageView
子類做的工作,特別是如果他們不干擾繪圖代碼。如果未來的iOS更新會破壞您的子類,請不要抱怨蘋果。很容易編寫自己的UIView子類來顯示圖像。如果您已經有適當的圖形,可以考慮將它放在CALayer
contents
中,而不是實現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
。
謝謝你解釋。我複製了hieund的代碼(請參閱上面的註釋)。利用iOS提供的API總是正確的方式。再次感謝。 – icespace 2012-04-19 01:38:51
謝謝你,幫忙。我會檢查我的代碼的細節。 – icespace 2012-03-15 09:03:00
@icespace歡迎:) – Vignesh 2012-03-15 09:03:43