1
我是IOS開發新手。 在我的應用程序中,我有幾個圖像,我是動畫。 圖像數量可能會有所不同。ios - 如何計算UIView動畫需要多少內存?
在ipad 2上運行時,動畫效果很好。 當在ipad 1上運行時,大量的圖像(20+)應用程序只會因爲內存警告而崩潰。
我想計算一個動畫將提前預留的內存量。 基於這個數字,我可以計算出是否通過我的動畫或跳過 到最終狀態。
這怎麼辦?
編輯:
我當前的代碼:
- (void)remix
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:animationDuration];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:
@selector(animationDidStop:finished:context:)];
self.currentStatus = canvas_status_animating;
NSMutableArray *circles = [[NSMutableArray alloc] init];
for (CircleView* view in self.subviews)
{
if(![view isKindOfClass:[CircleView class]])
continue;
[circles addObject:view];
}
[self animatePosition:circles];
[UIView commitAnimations];
}
-(void) animatePosition:(NSArray*)circles
{
int maxWidth = self.bounds.size.width;
int maxHeight = self.bounds.size.height;
for (CircleView* view in circles)
{
int selectedX = 0;
int selectedY = 0;
if ((arc4random()%200)+1 > 100)
{
selectedX = (arc4random() % maxWidth) + 1;
selectedY = (arc4random() % 200) + 1;
selectedY = (selectedY > 100) ? (maxHeight - selectedY) : selectedY;
}
else
{
selectedX = (arc4random() % 200) + 1;
selectedX = (selectedX > 100) ? (maxWidth - selectedX) : selectedX;
selectedY = (arc4random() % maxHeight) + 1;
}
view.frame = CGRectMake(selectedX - view.frame.size.width/2,
selectedY - view.frame.size.height/2,
view.frame.size.width,
view.frame.size.height);
}
}
運行動畫之前和之後?它有點錯過了這個觀點,好像我運行的是動畫並且沒有足夠的空閒內存,應用程序會崩潰 – vondip 2012-07-13 00:23:26
您會在運行時檢查它嗎?內存檢查應該作爲一種優化技術來完成,而不是應用程序運行時的預防措施。如果你的動畫佔用太多的內存,你應該優化圖像,考慮從磁盤上傳輸它們,或者使用cocos2d,sprite或者其他的東西。我會告訴你,UIKit有延遲的動畫通常是動畫隊列,而不是內存。 – 2012-07-13 00:27:40
你的意思是經常是動畫隊列而不是內存? – vondip 2012-07-13 00:31:42