举例说明
方案 3种
看到这种 设计那么需要进行适配
-
使用纯代码去适配 工作量大 使用很多纯代码 体力活 基本就是判断 上方 下方高度 去计算和配合自动布局做更改
-
多一份xib ipad 的 内容和 本身xib一致 ,只是带后缀~ipad ~iphone 代码多的话 同样体力活 很多点击 跳转事件 都会重新绑 容易搞漏
-
size class 这个可能是唯一拯救你的方式去快速做ipad适配 (为嘛这样说 如果你有一个现成的iPhone项目如何快速 让你搞个一模一样的ipad项目 ????? 当然是纯代码写的,就只能撸代码了 )省时省力 (也是体力活 ,但是毕竟不用写代码对吧 写了还要测) 基本上就造着设计图 拖拖拽拽 不写一句代码 适配了 还能实时看到效果
关于如何用size class 去适配所有约束我练习过有好多次 踩着 官方文档还有网上各种教程 姑且认为我是真的很蠢 是真不太明白这个
到底是个什么鬼 compact regular 然后直到
我发现 this size class 和 all 的区别的时候 我做了一些practice any class 的时候
(其实之前也发现过但是之前总是 约束横竖屏时 出现冲突约束 ,
横屏配好 配竖屏出问题,竖屏约束做好 横屏出问题 ☹️😕,
所以索性他喵的不用啦,xib上的视图拖上去
大概摆摆位置 布局都用自动布局纯代码搞)
勾选width 和 height 原由 因为在我看来 这个理解可能不准确 但是我理解的是竖屏 下 我认为 保持width 不动 我只关心高度上的适配 但是我理解的是横屏 下 我认为 保持height 不动 我只关心宽度上的适配
所以我的个人思路是这样的:
默认是 any 下 因此做约束的时候 直接切换 竖屏模式配
做约束时 一定勾选vary for traints 勾选width 和 height 都是在这个选项卡
1.模式 竖屏 -> 下勾选width 去配竖屏显示 正常 就好了 (这里不管横屏的任何显示)
2.切换 横屏 -> 下勾选height 去配 (同样这里不管竖屏的显示)
检查
各个设备 横竖屏切换看 哪里不对改哪里
原则 也是通过 1. 2 步骤去做更改 更改的时候约束冲突 针对 当前的设备 做的时候 只要在vary for traints 勾选width 或者 width 的时候 是可以放心的清理当前视图的约束的
然后 选择 ipad适配 思路也是按照这样的方式来做 基本上适配就搞完了
做好过后 很可能还是因为xib(还是iOS系统相关版本的问题 只能猜测下)的原因 出现些适配 诡异问题 基本上是safe area 和 auto 布局引起的比如什么遮挡 这种情况改貌似 只有 通过纯代码 在 uodateconstraits 中 使用snapkit remakeconstraits