2010-05-04 58 views
1

我正在爲我的iPhone應用程序創建基本動畫。我有兩種不同類型的動畫可供選擇。我可以用這...iPhone上的動畫 - 使用圖像序列或旋轉?

NSArray *myImages = [NSArray arrayWithObjects: 
[UIImage imageNamed:@"myImage1.png"], 
[UIImage imageNamed:@"myImage2.png"], 
[UIImage imageNamed:@"myImage3.png"], 
[UIImage imageNamed:@"myImage4.gif"], nil]; 

UIImageView *myAnimatedView = [UIImageView alloc]; 
[myAnimatedView initWithFrame:[self bounds]]; 
myAnimatedView.animationImages = myImages; 
myAnimatedView.animationDuration = 0.25; 
[self addSubview:myAnimatedView]; 
[myAnimatedView release]; 

或這樣的事情...

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:1.5]; 
// other animations goes here 
myImage.transform = CGAffineTransformMakeRotation(M_PI*0.5); 
// other animations goes here 
[UIView commitAnimations]; 

我有好幾個,這些部件的動畫,所以我要選擇一個選項,使用最少量的內存並且最快速地運行。任何建議將是偉大的,謝謝

回答

0

在你的問題有很多變數來說明。它的大部分將取決於圖像的大小和複雜程度以及動畫運行的頻率。我的直覺是使用API​​提供的轉換將是最便宜的,但唯一真正的方法是告訴壓力測試這兩個動畫,並看看哪些在你的情況下最好。

+0

感謝您的領導,這真的很有用。你會認爲使用一個小的PNG和平鋪它會更好地使用一個更大的單個PNG? – user157733 2010-05-04 15:41:45

0

我會去混合:從動畫代碼生成靜止圖像並將圖層保存爲CGImages。

0

因此,您需要考慮的根本問題是您希望一次在內存中存儲多少幀動畫。如果您使用animationImagesArray或一個單一的巨大圖像並將所有幀合併爲一個,則無關緊要。將解碼的圖像數據保存在內存中會佔用大量空間,您可能可以爲少量小圖像獲得解碼數據,但是您可以輕鬆編寫一些代碼,這會使設備崩潰,因爲會佔用所有內存。看到我的博客文章關於這個特定問題video-and-memory-usage-on-ios-devices。編寫代碼的更好方法是不要同時將所有解碼的視頻幀(UIImages或CGImageRefs)保存在內存中。