[toc]
體驗分屏
分屏方式就是:打開第一個程序,上滑展示程序塢,按住第二個程序拖入屏幕(此時是懸浮模式),懸浮模式頂部‘-’長按拖動可以實現(xiàn)分屏模式(也可以用于切換)
分屏模式與懸浮模式可以共存,也就是可以同時開 3 個程序,在一個屏幕上
mac 分屏,長按左上角綠色那個就行(按一下是全屏)
開發(fā)問題
- 需要使用 launch Screen File 才行,使用 Launch Images Sourc 是不行的(坑了好久,網(wǎng)上也搜不到什么答案)
- 如果要用到這個分屏,自動布局就要求很牛逼了(關(guān)于自動布局,又可以進一步提升)
- iOS 11 之前的分屏(懸浮分屏),寬度基本是定死的(320 或 375)
- iOS 11 之后,有 2種分屏,一種就是懸浮分屏;另一種是真分屏,同時使用 APP,會存在 3 中分配方式(小+大、大+小、平分)(注:并不是平分屏幕,因為中間有個分割線,實測為 10pt)
豎屏?xí)r,只有左右分屏,小的部分為 320 或者 375(就是塞了個 5s 或者 8 的屏幕寬度)
橫屏?xí)r,存在平分,除去分割線之后平分
xcode 9.3 已經(jīng)在 sb 中體現(xiàn)了,分屏預(yù)覽,直接用 sb 開發(fā)也是很有好處啊,為啥都不喜歡呢,不覺得沖突很多啊
- 分屏得注意(不要以 pad 的尺寸,寫死了一些約束值)(以前都是以屏幕尺寸來判斷屏幕尺寸的,在分屏的情況下可能不適用了,得想辦法根據(jù)當前視圖大小來適配了)
- 如果開發(fā) iPhone,不支持 iPad 的話,APP 在 iPad 上依舊可以打開,但是不能使用分屏的,那么就不用仔細適配(至少保證能用,不然審核還是不過)
初探
分辨率表
- iPhone
| 設(shè)備 | 開發(fā)尺寸 | 倍數(shù) | sizeClass |
|---|---|---|---|
| 豎屏 | |||
| iPhone4/4s | 320x480 | @2x | CR |
| iPhone5/5s/se | 320x568 | @2x | CR |
| iPhone6/7/8 | 375x667 | @2x | CR |
| iPhone6+/7+/8+ | 414x736 | @3x | CR |
| iPhoneX | 375x812 | @3x | CR |
| 橫屏 | |||
| iPhone4/4s | 480x320 | @2x | CC |
| iPhone5/5s/se | 568x320 | @2x | CC |
| iPhone6/7/8 | 667x375 | @2x | CC |
| iPhone6+/7+/8+ | 736x414 | @3x | RC |
| iPhoneX | 812x375 | @3x | CC |
- iPad
| 設(shè)備 | 開發(fā)尺寸 | 倍數(shù) | sizeClass |
|---|---|---|---|
| 豎屏 | |||
| iPad 7.9/9.7 | 768x1024 | @2x | RR |
| iPad 10.5 | 834x1112 | @2x | RR |
| iPad 12.9 | 1024x1366 | @2x | RR |
| 橫屏 | |||
| iPad 7.9/9.7 | 768x1024 | @2x | RR |
| iPad 10.5 | 834x1112 | @2x | RR |
| iPad 12.9 | 1024x1366 | @2x | RR |
- iPad 分屏
| 設(shè)備 | 開發(fā)尺寸 | 倍數(shù) | sizeClass |
|---|---|---|---|
| iPad 7.9/9.7 橫屏 大 | 694x768 | @2x | RR |
| iPad 7.9/9.7 橫屏 中 | 507x768 | @2x | CR |
| iPad 7.9/9.7 橫屏 小 | 320x768 | @2x | CR |
| iPad 7.9/9.7 豎屏 大 | 438x1024 | @2x | CR |
| iPad 7.9/9.7 豎屏 小 | 320x1024 | @2x | CR |
| iPad 10.5 橫屏 大 | 782x834 | @2x | RR |
| iPad 10.5 橫屏 中 | 551x834 | @2x | CR |
| iPad 10.5 橫屏 小 | 320x834 | @2x | CR |
| iPad 10.5 豎屏 大 | 504x1112 | @2x | CR |
| iPad 10.5 豎屏 小 | 320x1112 | @2x | CR |
| iPad 12.9 橫屏 大 | 981x1024 | @2x | RR |
| iPad 12.9 橫屏 中 | 678x1024 | @2x | RR |
| iPad 12.9 橫屏 小 | 375x1024 | @2x | CR |
| iPad 12.9 豎屏 大 | 639x1366 | @2x | CR |
| iPad 12.9 豎屏 小 | 375x1366 | @2x | CR |
100% 使用自動布局 ?
- 想要針對性布局肯定不靠譜啊
- 參考 h5 使用流動布局
寬:完全按比例,包括間隔,使用容器百分制寬度
高:從上往下堆疊,下面留白,適當使用 footer
字體
- 不方便,只能特殊設(shè)置,很難受,考慮別的辦法
使用 sizeClass
- iOS 8 就開始有了,現(xiàn)在用很舒服,以前基本沒用過啊
- width:compact,regular,any
- height:compact,regular,any
蘋果的分類
- 按分類補充了上面的分辨率表
- 簡單理解:
類似手機:CR
類似平板:RR
手機橫屏:CC
特殊 plus 橫屏:RC
代碼實現(xiàn)
- 純代碼:使用
UITraitCollection類即可,已經(jīng)更新在 UIKit API 部分 - sb:很方便,大部分屬性邊上就可以
+,跟按鈕一樣設(shè)置狀態(tài)即可
相關(guān)思考
- 根據(jù)蘋果的分類,compact,regular,any
- 組合后就是 4 種
- 那么不論是 UI 適配,還是 字體 適配等, 都使用統(tǒng)一的分類適配方案即可
- 如果 iPhone 僅豎屏,iPad 4 周旋轉(zhuǎn),只需要 2 套 適配方案 CR 和 RR
總結(jié)
- iOS 11 之后,iPad 有完全分屏之后,sizeClass 就十分有用,僅 iPad 上就需要 2 中布局,僅使用設(shè)備判斷的方式,肯定不滿足適配要求
- 使用 iPhone 豎屏,iPad 4 周旋轉(zhuǎn),適配 CR 和 RR 2 套方案即可適配 iPhone 和 iPad,而且支持 分屏
- 針對 iPhone 內(nèi)部 5、6、6p、X 的特殊適配另講
后續(xù)問題
- iPad 橫版的話,寬度特別大,跟豎屏的用一個排版得難看,一般會變成左右排版
- 僅根據(jù) sizeClass 又不好判斷,再根據(jù)設(shè)備旋轉(zhuǎn)方向適配,又是一條不歸路
- 如果 iPad 版統(tǒng)一搞成橫版好像效果也還不錯,具體情況再說
- 或者與瀏覽器一樣 2 邊留白