2016-11-16 19 views
0

UIImageView具有animationImages用於動畫化圖像序列。這工作正常。但它擁有圖像對象。所以當這個動畫發生的時候,內存的使用會激增。我試圖NSTimer設置圖像視圖的圖像屬性,但它不起作用。是否有任何替代動畫使用UIImageView圖像數組?

我們可以通過其他方法實現嗎?

+0

可以繪製圖像彼此使用CoreGraphics中和CADisplayLink後。 –

回答

0

而不是尋找替代品,只是嘗試糾正現有的代碼。

animationImages分配映像的最佳做法應該是用的initWithContentsOfFile代替imageNamed:

imageNamed:它緩存的圖像和你失去了記憶控制 - 有沒有保證釋放對象實際上會釋放圖像,但在緩存時第二次提供更快的圖像加載速度。

imageWithContentsOfFile:它不會緩存圖像,並且對內存更友好,但它不會緩存圖像,而較重的圖像加載速度較慢。

當動畫停止時,只需釋放圖像集合數組。如果您使用的是ARC,那麼將它的圖像集合數組設置爲零。

最佳實踐:

for(int itemIndex = 0; itemIndex < 20; itemIndex++) { 
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"myImage1" ofType:@"png"]; 
    UIImage *image = [[UIImage alloc] initWithContentsOfFile:filePath]; 

    [imageArray addObject:image]; 
} 

動畫後:

imageArray = nil;