2012-06-29 56 views
1

是iOS應用程序開發和設計的新手。我想知道這2個問題:高分辨率圖像和視網膜顯示

我可以創建一個高分辨率的圖像&用於所有設備(無論是視網膜還是非視網膜)? (爲什麼應該爲非視網膜設備故意創建低分辨率圖像?爲什麼不能一切都是高分辨率?)...我希望這不是一個愚蠢的問題!

我們這裏的「高分辨率」究竟意味着什麼? '1024像素×1024像素'?對於視網膜顯示來說,「高」真的有多高?

請幫忙嗎?

+0

爲了防止浪費寶貴的內存,並縮放可能會產生不需要的結果的圖像。 – Joe

回答

3

「高分辨率」表示iOS(和OSX)上每個維度的像素的兩倍。因此,如果非視網膜顯示器上的圖像爲23x10像素,則其高分辨率版本的尺寸必須爲46x20像素。

如果您爲您的高分辨率圖像命名如下:lowResImageName @2x.png,系統將自動選擇視網膜設備上的高分辨率圖像。如其他人所說,您可以使用特殊的低分辨率圖像來最大限度地提高質量(因爲您可以選擇從低分辨率圖像等中留下細節),並最大限度地減少內存佔用(因爲非視網膜變體到目前爲止,視網膜版本的RAM只有一半)。

它也有助於思考非視網膜像素,因爲一個非視網膜像素等於一個「顯示點」,即iOS測量尺寸的單位。

2

iOS設備會決議如下:

      standard   retina 
iPhone, iPod Touch  320 x 480   640 x 960 
iPad      768 x 1024   1536 x 2048 
iPhone 5      -    640 x 1136 

爲什麼要創建一個低分辨率圖像?因爲它會自動在非視網膜設備上使用,節省內存。

1

對於一些可以正常工作的圖像,但對於某些圖像(例如,如果圖像有一些精美的文字),它們會在自動縮小時顯得鋸齒狀或扭曲。也可能有些情況下,當你想要顯示不同的東西時(我有偶爾的圖像,很酷的漸變效果,只是在低分辨率設備上看起來不正確,所以我不得不將低分辨率圖像中的一些細節刪除到讓它看起來不錯)。

另一個答案也是正確的,如果你允許這兩種情況下,低分辨率設備將只加載低分辨率的圖像到內存,所以應用程序將使用較少的內存。這只是針對這些情況的一種優化,但它仍然很有幫助,因爲通常情況下,您可以認爲低分辨率設備由於年齡較大而開始使用較少的內存。

+1

+1從設計的角度來看這是一個很好的解釋!謝謝! :) – Jean

0

視網膜圖形,你提到的高分辨率圖形應該是寬度和高度的兩倍點值。我的意思是,在所有iPhone大小的設備上,屏幕的大小是320點乘480點。在非視網膜設備上,轉換爲320像素×480像素。在視網膜設備上,這轉換爲640像素乘以960像素。在水平和垂直方向上都是雙倍的。

這是什麼意思,你應該有兩個版本的所有圖像資產。所以,如果你在屏幕上想要的圖像是44點寬44點,你應該有兩個圖像... Image.png,這將是44像素乘44像素,[email protected]將是88像素×88像素(對於視網膜設備,這是@ 2x所代表的)。

爲什麼有兩個版本,而不只是高雷茲版?因爲它需要處理能力來將較大版本壓縮成較小版本。只要擁有較低分辨率的版本就容易多了,而且您可以節省寶貴的內存。

0

第一個問題由H2CO3回答。你在舊設備上安全的內存(想想iPhone 3G,許多目前的應用程序非常慢,但編碼良好的應用程序仍然工作正常)

什麼是高分辨率?

E.g.在非視網膜設備上,您可以使用[UIImage imageNamed:"example.png"]顯示一些300x200像素的example.png

高分辨率意味着,您有額外的[email protected] 600x400像素,即雙倍大小。然後,您的應用尺寸變得更大,這兩款設備都具有適當的圖形,但您可以將內存節省在舊設備上(它必須分配內存4倍,而不會爲用戶帶來額外的改進,因爲它仍然只有300x200像素顯示屏 - 600x400像素圖像的空間)。

相關問題