iOS:介面適配(三)--iPhone不同機型或裝置不同尺寸適配(螢幕適配)和系統適配

來源:互聯網
上載者:User

標籤:

對於不同蘋果裝置,各個參數查看《iOS:機型參數、sdk、xcode各版本》。

       機型變化

          座標:表示螢幕物理尺寸大小,座標變大了,表示機器螢幕尺寸變大了;

          像素:表示螢幕圖片的大小,跟座標之間有個對應關係,比如1:1或1:2等;

          ppi:代表螢幕物理大小到圖片大小的比例值,如果ppi不變,則座標和像素的比例不會變;

         iPhone 4以前           iPhone、iPhone3/3G機型未採用retina,座標是320 x 480,螢幕像素320 x 480 ,他們一一對應,1:1關係。即一個座標組應1個像素。         iPhone 4/4s          機器採用了retina螢幕,座標是320 x 480,螢幕像素640 x 960,他們之間是1:2關係。即一個座標組應2個像素。         iPhone 5/5s/5c          機器採用了retina螢幕,座標是320 x 568,螢幕像素640 x 1136,他們之間關係式1:2關係。即一個座標組應2個像素。         iPhone 6/6S          機器採用了retina螢幕,座標是375*667,螢幕像素750 x 1334,他們之間關係式1:2關係。即一個座標組應2個像素。         iPhone 6 plus/6S plus          機器採用了retina螢幕,座標是414*736,螢幕像素1080 x 1920,他們之間關係式1:2.6關係。即一個座標組應2.6個像素。       適配方法:
  • iPhone 4s之後,不同機型,螢幕大小座標不變,跟實際圖片大小比例不是1:1就是1:2關係。因為座標不變,所以在開發中可以使用絕對位置,確定每個視圖位置,同時提供倆套圖片,~.png和[email protected],系統根據機器的解析度自動決定使用哪張圖片。
  • iPhone 5/5s/5c之後,因為螢幕大小座標已變,高度增加568 - 480 = 88個點,再使用絕對位置的方式,會導致程式高度不夠,如果程式未做適配,系統會將多出來的88個點將會將會被自動均分為上下兩部分,使得上下出現黑邊。 對應不同機型,螢幕座標大小改變了,不能再絕對位置了,為瞭解決這個問題,ios出現了一種新技術:AutoLayout。AutoLayout可以解決不同機型,螢幕大小的變化,至於圖片的適配,因為5/5s/5c,座標:像素 = 1:2,所以直接使用@2x.png圖片就行。
            至於@2x圖片大小,是按照640 x 960 還是 640 x 1136 的大小,一個是展開效果,一個是壓縮效果,因為比例差不多,推薦使用大圖的。
  • iPhone 6之後,因為螢幕大小座標已變,寬、高都增大,但是寬、高比例不變,類似之前的處理方式,使用AutoLayout自動適配,座標:像素 = 1:2,使用@2x.png圖片。
    綜合之前的,@2x圖片可以按照750 x 1334規格來。
  • iPhone 6 plus,類似之前使用AutoLayout,在使用圖片的時候,因為 座標:像素 = 1:2.6,理論上使用@2.6x.png圖片即可,但是這不是整數,實際使用很不方便,而@2x 和 @3x 都不太行得通,怎麼辦?

           引用一段文字說的很好:  

           “不是現有的螢幕物理解析度明顯超過了 @2x 但還達不到 @3x 的水平嗎?那我們歪歪一個滿足 @3x 的螢幕總可以吧?
            對的,歪歪。
            程式在 iPhone 6 Plus 上啟動並執行時候,iOS 會騙它說,你運行在一個超大的 @3x Retina 顯示屏上,物理解析度高達 1242 x 2208,邏輯解析度是 414 x 736,兩者都比 iPhone 6 要大。然後作為設計師和開發人員,也跟著一起歪歪。設計師畫圖的時候要把螢幕當成 1242 x 2208 來畫圖(而且要提供@3x 的高清圖),開發人員也按照 414 x 736 的邏輯解析度來寫程式。
            但借來的總要還的。等咱們歪歪結束了以後,iOS 拿到這個假大的 UI 繪製結果,即時地再縮小到實際的 1080 x 1920 解析度(系統通過某種演算法)。於是,使用者在 iPhone 6 Plus 的螢幕上看到的永遠是被縮小了的映像:

          這麼做使得設計和開發的過程大大簡化,且最後的實際縮放係數 @2.62x 非常接近理想的 @2.46x,使得同樣的素材在真機上看起來尺寸也非常合理。

尺寸適配:

        代碼中的尺寸不要使用480、460這樣的絕對數值,使用的UIScreen取裝置的尺寸。

開啟適配?(手動/自動)

        在某機型上,如果是自動適配,比如iPhone 5,老版程式就會在螢幕上、下倆端多出倆塊黑條;比如iPhone6/6plus,老版程式就會自動等比展開。那如何關閉自動適配?

        指定啟動圖(例如iPhone 5為[email protected])或者使用Launch Screen File.xib,即程式使用手動適配,不會做展開等,但是程式內部必須已做處理,否則使用自動適配方案。   

     總結:
  • 不同機型適配可看成兩部分,一是螢幕大小適配(座標),一是像素適配;前者根據不同的機型大小,視圖大小自動適應(AutoLayout);後者根據機型的解析度和座標比率,提供合適@xx圖片;
  • 目前4s、5/5s/5c、6的適配,使用圖片部分,都是使用@2x的圖片,在不同的機器上肯定會有一定的展開、縮小,目前沒看到什麼好的解決方案,推薦圖片按大表徵圖准做;
  • 趨勢:機器螢幕的大小可能會越來越多,絕對位置的方式肯定不行,使用AutoLayout,自動適配螢幕大小,類似網頁的思想來設計介面;
  • 趨勢:xcode 6中已經可以使用向量圖了,可以使用向量圖,避免各種規格圖片;

下面將講解一下系統適配:從ios5開始,

 

IOS7以後和之前

 
12 <span style="font-size:18px;background-color: rgb(255, 255, 255);">#define IOSVersion                          [[[UIDevice currentDevice] systemVersion] floatValue]#define IsiOS7Later                         !(IOSVersion < 7.0)</span>


系統需要適配有以下幾個點:

1.(StatusBar)StatusBarHeight 的高度 ios7以後 StatusBar是懸浮在螢幕上方的 所以ios7之後控制項布局需要加上20 而在ios7之前不需要

2. label的文本自適應需要適配

3.(ios8適配)UIAlertController UIAlertAction —ios8 代替了 UIAlertView

4. (ios8適配)ios8新增定位判斷,info.plist檔案設定兩個屬性 用到定位需要適配

 

(後續更新)

iOS:介面適配(三)--iPhone不同機型或裝置不同尺寸適配(螢幕適配)和系統適配

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.