2010-08-18 37 views
3

iPhone 4令人驚歎的顯示效果使我們能夠製作出更高分辨率的圖稿以充分利用新屏幕。提供新的藝術作品或縮小大型圖像以處理Retina顯示會更好嗎?

我的問題是,有什麼更好的方式來應用圖像? 目前,有兩種方法可以這樣做:

  • 使用兩個圖像: 「image.png」 和 「[email protected]」。問題在於,如果您的應用需要大量圖像,包的大小會大大增加。此外,您必須縮放圖像並將其正確保存,這可能需要一段時間。

  • 縮放圖像。只加載大圖像,然後在代碼中或使用Interface Builder將其縮放到50%。這樣可以減少捆綁包的尺寸和設計時間,但在小屏幕上可能看起來不太好。

你認爲哪種方法最好,爲什麼?

回答

5

同時考慮到設備內存。如果您在較舊的設備(3G,3GS)上加載雙倍大小的圖像,它們可能會縮小顯示(如果您在其容器視圖上適當地設置縮放屬性),但較大的圖像仍佔用兩倍的內存一次加載。隨着您使用的圖像數量的增加,浪費的RAM數量也會增加。

如果您只加載適用於運行該應用程序的設備的內容,那麼您將從長遠角度看到性能優勢。

編輯:我應該注意,這意味着我的投票是使用兩個單獨的圖像文件。如果不清楚:)

+1

4倍的內存 - 圖像是2d :) – Basic 2010-08-18 16:44:24

3

這取決於。如果可能的話,不要重新調整高分辨率顯示器的低分辨率圖像。

對於像圖標這樣的一些東西,每個像素都很重要,您需要高分辨率和低分辨率版本。

對於其他人,如攝影圖像和背景,縮放比例很好 - 如果操作正確。

3

Bundle Size!=無線設計狀態下的Ram尺寸。不要擔心捆綁大小。如果你真的關心支持真正的舊設備(如原創iPod Touch),那麼發佈兩個版本的應用程序。

否則,只加載適合手頭設備的圖像。

+0

捆綁包的大小就是一切。如果你跨越20 MB,你註定要失敗。 – Jonny 2011-02-16 03:24:49

+0

@Jonny,我想。我不認爲它會加載你的應用程序加載整個包到內存中。畢竟,如果沒有從磁盤加載該文件,爲什麼還需要加載'[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:...]'。 – 2011-02-16 12:24:10

1

如果運行在20MB的限制,絕對要在代碼中縮放圖像。捆綁尺寸在這一點上確實變得重要。如果用戶無法在3G上安裝您的應用,將會有很多丟失的下載。

除了20MB的規則,最好有獨立的圖像,但如果你不能,以編程方式將UIImages重新調整爲較小的UIImage,然後將它們打包到UIImageView中,但不要將100x100 UIImage放入50x50 UIImageView。重新調整UIImage的尺寸看起來最好。

1

我已經制作了一個約100張圖片(每個版本的顯示)的應用程序。該應用程序是超通用的(支持iPad,iPhone/iPod touch和iPhone 4的顯示器)。捆綁包的大小確實增加了,但這不是問題(在我的應用中,主要部分是圖像和聲音 - 每個圖像都有聲音),大小小於100 MB。這很多,但是你看到它的增長並沒有那麼大。你應該始終把兼容性放在首位。

正如有人所說,你的包的大小不會影響你的應用程序正在使用的內存。如果您不想使用2個版本的圖像,請不要打擾在代碼中擴展它們。他們不會在iPhone(像素化)或iPhone 4顯示(模糊)上表現出色。相信我,我有經驗。

相關問題