我有一個iPhone Xcode項目,當前只包含視網膜顯示圖像(尺寸是正常尺寸和@ 2x.png後綴的兩倍)。當我在iPhone模擬器(非視網膜)上運行應用程序時,圖像仍在顯示。這是否意味着我不必擔心包含兩組圖像:視網膜和非視網膜?在iPhone項目中不包括非視網膜顯示圖像
這一切似乎有點奇怪。如果沒有包含非@ 2x文件,我會假設沒有圖像出現在非視網膜設備上。
注意:我沒有在非視網膜設備上測試過我的應用程序。只是模擬器。
我有一個iPhone Xcode項目,當前只包含視網膜顯示圖像(尺寸是正常尺寸和@ 2x.png後綴的兩倍)。當我在iPhone模擬器(非視網膜)上運行應用程序時,圖像仍在顯示。這是否意味着我不必擔心包含兩組圖像:視網膜和非視網膜?在iPhone項目中不包括非視網膜顯示圖像
這一切似乎有點奇怪。如果沒有包含非@ 2x文件,我會假設沒有圖像出現在非視網膜設備上。
注意:我沒有在非視網膜設備上測試過我的應用程序。只是模擬器。
即使它的工作原理,它不是好的做法,如果你有一個媒體重應用肯定會影響性能和電池壽命和內存佔用和....
順便說一句,它只是您沒有1x圖形可用,或者您擔心您的應用程序(下載大小)或...
我敢肯定,如果您沒有非視網膜圖片,iOS會使用@ 2x並將其縮小。雖然這是次優的,因爲你讓iOS在運行時進行縮放比包含非視網膜圖形要慢,而且iOS可能不會像你選擇的圖形編輯器那樣做得好。
如果要在Interface Builder中分配圖像,並且您將圖像屬性設置爲UIImageView
以[email protected]
爲例,iOS不會知道它是高分辨率的「2x」圖像。事實上,在視網膜顯示屏上,iOS會查找名爲[email protected]@2x.png
的圖像。由於它不會找到它,它會將圖像的比例因子設置爲1.0。
contentMode
屬性(只是XCode中的「模式」)將決定是否出現圖像的任何縮放以適合UIImageView的約束。您可能希望將模式設置爲「Aspect Fit」,以便根據視網膜和非視網膜顯示屏的需要縮放高分辨率圖像。一般情況下,圖像將如Interface Builder中所示顯示。
如果您正在使用的UIImage的imageNamed
或類似功能的加載圖像,並且只指定image
(其中「image.png」不存在,但「[email protected]」一樣),那麼,iOS將真正找到在非視網膜顯示器上的圖像,儘管比例因子將爲1.0。如前所述,您需要將其縮放以適合您的視圖。該圖像將在視網膜設備上正常工作,並且比例因子將被設置爲2.0,因爲iOS首先查找「2x」圖像,而其他文件是否存在則無關緊要。
這是來自Apple的文檔上imageNamed
:
在運行iOS 4或更高版本的設備,該行爲是相同的,如果 設備的屏幕具有1.0的比例。如果屏幕的比例爲2.0,,則此方法首先搜索具有相同文件名的圖像文件 並附加@ 2x後綴。例如,如果文件的名稱是 按鈕,它首先搜索按鈕@ 2x。如果它找到一個2倍,它將加載 該映像並將返回的UIImage對象 的scale屬性設置爲2.0。否則,它加載未修改的文件名並將比例 屬性設置爲1.0。有關支持具有不同比例因子的圖像的 的更多信息,請參閱iOS應用程序編程指南。
如果可能的話,你應該包括視網膜和非視網膜圖像。使用比所需更高分辨率的圖像會對內存和性能產生負面影響。