iOS 11 之后 iPad 分屏适配探究

[toc]

体验分屏

分屏方式就是:打开第一个程序,上滑展示程序坞,按住第二个程序拖入屏幕(此时是悬浮模式),悬浮模式顶部‘-’长按拖动可以实现分屏模式(也可以用于切换)
分屏模式与悬浮模式可以共存,也就是可以同时开 3 个程序,在一个屏幕上

mac 分屏,长按左上角绿色那个就行(按一下是全屏)

开发问题

  • 需要使用 launch Screen File 才行,使用 Launch Images Sourc 是不行的(坑了好久,网上也搜不到什么答案)
  • 如果要用到这个分屏,自动布局就要求很牛逼了(关于自动布局,又可以进一步提升)
  • iOS 11 之前的分屏(悬浮分屏),宽度基本是定死的(320 或 375)
  • iOS 11 之后,有 2种分屏,一种就是悬浮分屏;另一种是真分屏,同时使用 APP,会存在 3 中分配方式(小+大、大+小、平分)(注:并不是平分屏幕,因为中间有个分割线,实测为 10pt)

竖屏时,只有左右分屏,小的部分为 320 或者 375(就是塞了个 5s 或者 8 的屏幕宽度)
横屏时,存在平分,除去分割线之后平分
xcode 9.3 已经在 sb 中体现了,分屏预览,直接用 sb 开发也是很有好处啊,为啥都不喜欢呢,不觉得冲突很多啊

  • 分屏得注意(不要以 pad 的尺寸,写死了一些约束值)(以前都是以屏幕尺寸来判断屏幕尺寸的,在分屏的情况下可能不适用了,得想办法根据当前视图大小来适配了)
  • 如果开发 iPhone,不支持 iPad 的话,APP 在 iPad 上依旧可以打开,但是不能使用分屏的,那么就不用仔细适配(至少保证能用,不然审核还是不过)

初探

分辨率表

  • iPhone
设备 开发尺寸 倍数 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
设备 开发尺寸 倍数 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 分屏
设备 开发尺寸 倍数 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

字体

  • 不方便,只能特殊设置,很难受,考虑别的办法

使用 sizeClass

  • iOS 8 就开始有了,现在用很舒服,以前基本没用过啊
  • width:compact,regular,any
  • height:compact,regular,any

苹果的分类

  • 按分类补充了上面的分辨率表
  • 简单理解:
类似手机:CR
类似平板:RR

手机横屏:CC
特殊 plus 横屏:RC

代码实现

  • 纯代码:使用 UITraitCollection 类即可,已经更新在 UIKit API 部分
  • sb:很方便,大部分属性边上就可以 +,跟按钮一样设置状态即可

相关思考

  • 根据苹果的分类,compact,regular,any
  • 组合后就是 4 种
  • 那么不论是 UI 适配,还是 字体 适配等, 都使用统一的分类适配方案即可
  • 如果 iPhone 仅竖屏,iPad 4 周旋转,只需要 2 套 适配方案 CR 和 RR

总结

  • iOS 11 之后,iPad 有完全分屏之后,sizeClass 就十分有用,仅 iPad 上就需要 2 中布局,仅使用设备判断的方式,肯定不满足适配要求
  • 使用 iPhone 竖屏,iPad 4 周旋转,适配 CR 和 RR 2 套方案即可适配 iPhone 和 iPad,而且支持 分屏
  • 针对 iPhone 内部 5、6、6p、X 的特殊适配另讲

后续问题

  • iPad 横版的话,宽度特别大,跟竖屏的用一个排版得难看,一般会变成左右排版
  • 仅根据 sizeClass 又不好判断,再根据设备旋转方向适配,又是一条不归路
  • 如果 iPad 版统一搞成横版好像效果也还不错,具体情况再说
  • 或者与浏览器一样 2 边留白

猜你喜欢

转载自blog.csdn.net/weixin_34186931/article/details/87425814