2012-04-09 60 views
5

我剛剛注意到一個有趣的事情,同時試圖更新我的應用程序的新iPad Retina顯示器,Interface Builder中的每個座標仍然基於原始的1024x768分辨率。iPad Retina顯示器的XCode座標

我的意思是,如果我有一個2048x1536圖像使其適合顯示器上的整個屏幕,我需要將其大小設置爲1024x768而不是2048x1536。

我只是好奇這是故意嗎?我可以在界面生成器中將座標系切換爲Retina專用的嗎?這有點令人討厭,因爲我的一些圖形在原稿的寬度或高度上都不是2倍。我似乎無法設置1/2座標數字,例如1.5,它可以是Interface Builder中的1或2。

我應該只是在代碼中做我的界面設計,而忘記界面構建器?在兩個方向上保持我的圖形精確到2倍?或者只是和它一起生活?

回答

4

iOS上的界面基於點而不是像素。圖像的大小是原件的兩倍。

點對戰像素在iOS中有你在你的繪製代碼指定座標和 底層設備的像素之間的區別。在使用原生繪圖技術(如 Quartz,UIKit和Core Animation)時,可以使用邏輯座標空間指定座標值,邏輯座標空間用於測量以點爲單位的距離。這個邏輯座標系統與系統框架用於管理屏幕上像素的設備座標 分離。系統自動將邏輯座標 空間中的點映射到設備座標空間中的像素,但該映射不總是一一對應的,即 。這種行爲導致一個重要的事實,你應該永遠記住:

一點不一定對應於屏幕上的一個像素。 使用點(和邏輯座標系)的目的是爲了提供與設備無關的一致輸出大小。 一個點的實際大小是無關緊要的。點的目標是提供 相對一致的比例尺,您可以在代碼中使用它來指定 視圖和渲染內容的大小和位置。 實際映射到像素的點數是由系統 框架處理的詳細信息。例如,在具有高分辨率屏幕的設備上,寬度爲一點的 行實際上可能會在屏幕上產生兩個像素寬度爲 的行。結果是,如果在兩個類似設備上繪製相同的 內容,並且其中只有一個具有 高分辨率屏幕,則兩個設備上的內容看起來大小約爲 。

在您自己的繪圖代碼中,大部分時間使用點,但有 是您可能需要知道點如何映射到像素的時間。 例如,在高分辨率屏幕上,您可能希望使用額外的像素來提供內容中的額外細節,或者您可能只想以微妙的方式調整內容的位置或大小。 在iOS 4及更高版本中,UIScreen,UIView,UIImage和CALayer類 公開了一個比例因子,該比例因子告訴您點 與該特定對象的像素之間的關係。在iOS 4之前,此比例因子 被假定爲1.0,但在iOS 4及更高版本中,它可能是1.0或 2.0,具體取決於底層設備的分辨率。未來,其他比例因子也是可能的。

http://developer.apple.com/library/ios/#documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GraphicsDrawingOverview/GraphicsDrawingOverview.html

1

這是故意對蘋果的一部分,定位控制和文本時,使你的代碼相對獨立的實際屏幕分辨率。但是,正如您所指出的,它可以使設備的最大分辨率顯示圖形更復雜一些。

對於iPhone,屏幕始終爲480 x 320點。對於iPad,它的分辨率爲1024 x 768.如果您的圖形適合設備縮放,則影響並不難在代碼中處理。我不是一名平面設計師,對我來說,必須提供多套圖標,啓動圖像等來解決高分辨率問題,這對我來說已經證明有點具有挑戰性。

對於某些圖像類型,最大限度地減少對你的代碼的影響

蘋果公司的命名標準:

https://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/MobileHIG/IconsImages/IconsImages.html

這並不能幫助你,當你正在處理自定義圖形內聯,但是。