2013-06-27 145 views
0

我有一個在iPhone和iPad上運行的應用程序,大多數此應用程序的預期設備將是除iPad mini外的視網膜設備。我有很多圖像包含在這個應用程序中。 我的問題是,如果我決定只使用@ 2x圖像,iOS會將它們降級到非視網膜設備嗎?所以我只運送視網膜圖像?如果這是正確的,那麼實施它是一個壞主意?視網膜圖像,非視網膜設備

+1

我從一個叫做「rescale @ 2x」的地方獲得了一個小小的Mac工具。它需要您的@ 2x圖像併爲它們創建「正常」副本,因此您可以同時擁有這兩個副本。 –

回答

0

iOS不會降級這些圖像。但是,如果您仔細設置圖像瀏覽的框架,它不會產生任何問題。

+0

真的嗎?它不會降級?它通常會從非視網膜升級到視網膜圖像?我可以強制降級嗎? –

+0

不,它不會降級或升級。但是如果你的畫面很小而且圖像很大,那麼它可以容納較小畫面中的較大圖像,反之亦然。 – Apurv

0

如果你的圖像視圖有contentMode =擴展您的圖像將被調整到非視網膜

正常顯示,但有一些問題:

1)對非Retina如果顯示縮放視網膜圖像設備您將有圖像邊緣模糊。所以如果你想使用這個圖像的UI - 這將是一個壞主意。

2)有時Xcode的故事板不一樣,如果你只有@ 2倍的圖像(例如,在uibuttons)規模的正確圖像

0

如果您在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應用程序編程指南。

如果可能的話,你應該包括視網膜和非視網膜圖像。使用比所需更高分辨率的圖像會對內存和性能產生負面影響。

相關問題