iOS開發- iPhone6/6 Plus適配
花了點時間, 重新整理了下iPhone的相關適配, 總結如下:
iOS6之前, 螢幕適配一般使用autosize,設定視圖與父視圖的尺寸關係缺陷:(Autosizing布局的不足)1. 不能設定視圖與視圖之間的關係2. 不能設定尺寸放大,縮小的最大值,最小值iOS6之後, 使用自動布局。AutoLayoutiOS8 size classes (更加抽象, 正方形)
另外, 現在主流的一些裝置參數如下:
|
iPhone |
iPhone4 |
iPhone5 |
iPhone6 |
iPhone6+ |
Point |
320*480 |
320*480 |
320*568 |
375*667 |
414*736 |
Pixel |
320*480 |
640*960 |
640*1136 |
750*1334 |
1242*2208 |
Pexel(裝置) |
~ |
~ |
~ |
~ |
1920*1080 |
Scale |
1 |
2 |
2 |
2 |
3 |
PPI |
163 |
326 |
326 |
326 |
401 |
也就是說. 現在如果要適配iPhone6 Plus。 那麼你需要另外提供一套@3x的圖片. (之前只有一套常規, 一套@2x) 可以看Scale裡的值。
簡單的說:iPhone4、iPhone5、iPhone6這幾個裝置的ppi都是相同的,預設圖片優先是@2x。iPhone6 Plus的像素密度更高,預設圖片優先是@3x。
另外,iPhone6 Plus有一點和其他裝置不同:在App內部獲得的螢幕解析度是1242*2208,但裝置實際解析度是1920*1080,這時系統會把整體的顯示內容做一個縮放,downscale到1/1.15。這個特性在OSX上也有出現過:
從Xcode6 GM版本開始,模擬器新增了iPhone6和iPhone6 Plus兩種,如果舊的工程直接跑到這兩個模擬器中時,預設是"相容模式",即系統會簡單的把內容等比例放大,顯示效果有些模糊但尚可接受。此時App內部擷取到的裝置解析度和iPhone5是一樣的:320*568 point。
也就是說, 就是你原先的工程, 沒有適配iPhone6 plus。 但是在iPhone6 plus上運行, 也是沒有問題的。 這時候裝置解析度會和5一樣。320*568。即iPhone6 plus適配你的應用, 而不是你的應用去適配iPhone6 plus。這導致了6的高解析度無用武之地。
所以,我們要手動開啟高解析度模式。
啟用高解析度模式
啟用高解析度模式有2個方法(目前我能找到的):
1.添加大屏的LaunchImage:
在Images.xcassets裡,刪除舊的LaunchImage組,然後建立LaunchImage組,添加對應高解析度的圖片。對此,這裡有一篇更詳細的圖文介紹:How to Add a Launch Image for the iPhone 6。如果想要快速測試一下新的效果,這裡有3張樣本圖片下載。
2.添加Launch Screen File
Launch Screen是Xcode6和iOS8新加的功能,它用一個xib檔案來作為啟動畫面。App在舊版iOS啟動時,該屬性會被自動忽略,不會造成異常。
首先,點擊New File ->iOS User Interface ->Launch Screen,然後在工程設定項裡啟用它:
上面兩處設定,只要啟用任意一個即可讓App進入高解析度模式;但如果兩處都沒有設定,則App會回退到相容模式。鑒於現在不少App還需要相容iOS5,而第一種方法在iOS5上可能有bug,所以這裡推薦用第二種方法。
所以, 要做好現在這些裝置的適配, 需要學會autolayout(自動布局), 當然,這隻是個人建議。
另外, 還要多準備一份@3x的圖片。
再有, 要開啟高解析度模式。
再有,仔細觀察6+的模擬器, 它的案頭是可以橫向顯示的。 所以我們的應用在6+上也應該盡量適配橫屏。
下面附帶一些學習資料:
開始iOS 7中自動布局教程(一)
http://www.cocoachina.com/industry/20131203/7462.html
(翻譯)開始iOS 7中自動布局教程(二)
http://www.cnblogs.com/zer0Black/p/3977288.html
大屏iPhone的適配
http://blog.ibireme.com/2014/09/16/adapted_to_iphone6/
無限互聯iPhone6適配教程 全部視頻雲端硬碟下載連結
下載連結:http://pan.baidu.com/s/1kTgK4AF 密碼:p7yp