2010-10-13 48 views
2

我需要在iPad上顯示20 x 15的圖像網格。每張圖片都是50px x 50 px。iPad:UIImage imageWithContentsOfFile性能問題

我使用[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"name" ofType:@"png"]]來做到這一點,但我遇到了性能問題。應用程序嚴重滯後。有14種不同類型的圖像,都是png格式的50x50。

有沒有一種方法可以用來提高性能?

更新:我嘗試使用以下鏈接中找到的解決方案;這有所幫助,但並沒有完全解決問題。希望它能幫助別人。 http://www.alexcurylo.com/blog/2009/01/13/imagenamed-is-evil/

+0

是否使用'imageNamed:'改變性能? – 2010-10-13 20:07:50

+0

減慢了一點。 – 2010-10-13 20:09:59

+0

您是否在drawRect中繪製這些圖像?或者在圖像視圖或CALayers中顯示它們? – hotpaw2 2010-10-13 21:10:12

回答

3

imageNamed會緩存圖像,所以在第二次使用時會更快。如果這樣做沒有幫助,那麼如果內存不會受到太嚴重的影響,那麼可以預加載圖像,然後將它們從NSArray中交換出來或者例如NSMutableArray。

+0

如果需要,您甚至可以將它們預加載到單獨的線程中。 – 2010-10-13 21:12:26

+0

我加載了一個圖像數組,然後當我初始化UIView類型的對象時,我將視圖圖像設置爲保存圖像的數組中的適當索引。 – 2010-10-13 21:35:52

+1

在單獨的線程中預加載非常有幫助。 – 2010-10-15 17:01:37