在苹果正式发布iPhone 6和iPhone 6 plus以后,对适配问题一直比较困扰,虽然项目一直用的是Autolayout,看完网上各类适配的文章后更是一团糟。布局
当时总结了下关于适配的几个点:spa
作完这些这不就完事了吗,但后来发现一个问题,看下图设计
“请链接圆点 并记住路径”这个Label
当初设计的是向上约束为20,这在 320 x 480
和 320 x 568
分辨率下基本没什么问题,但在iPhone 6和iPhone 6 plus就会显示的整个Label太靠顶部,不够美观。下面的Button也有一样的问题,太靠底部。code
基于上面的问题,我跳入了 Size Classes
这个坑,为何这么说。ip
Any height
和Compact width
模式下对应的是iPhone 6 plus之外的设备,Regular height
和Compact width
模式下对应是全部iPhone 设备纵向的状况。没有单独的iPhone 6 plus的状况,这样根本解决不了问题。这里我想说的是,若是的APP只支持iPhone设备,而且只适用于竖屏,就彻底没有必要使用Size Classes
。get
再回头再想一想,除了上面提到的三点,还须要解决什么?io
先不要急着吐槽,请往下看class
回到刚才那个问题,如何解决?date
重点来讲下方法3,手写代码能够轻松作到这点。但在 xib/storyboard 中是没办法设置约束值相对于另外一个view的高度的比例。解决办法:请看下图
好比设计师是用iPhone 5/5s来设计的,向上Label向上约束要求是20,那么在 xib/storyboard 上能够在Label上面加一个透明的View设置高度是20。这时候须要作的是file
Equal Heights
,而后再去详情中设置Multiplier的值Update Frames
便可还有另外一种布局方式,把Label做为View的子视图,而且上下水平居中,一样的设置View的高度比例,这种方式适用于控件较多的页面。
这样一来,不论在什么屏幕上都会有比较好的布局效果。
不过利用比例布局的方式,可能没有单独判断并设置约束那么完美,但在复杂的界面布局时就较为有优点。目前项目中首页的适配效果:
以及其中一个布局的示例
另一个例子:知乎上这个 问题 其中 刘炜 的回答,关于 profile 页面的适配。手动设置ImageView的大小,也可使用上述设置比例的方法解决。