更加愉快的使用xib比例布局(放弃纯代码布局吧)

前言

虽然用了很久的xib,但是每次都在比例布局要处理很久,这次,就一次性解决它吧,反正有时间研究黑科技!

以前的处理方式

先说纯代码布局,无论是直接用frame布局还是Masorny还是SnapKit或多或少有涉及到根据屏幕宽还是高(一般是宽,何况现在还有不成比例的iPhoneX,更要用宽,抛弃iPhone4)来调整控件frame或者约束;

再说用storyBoard和xib,用autoLayout做布局的时候,有两种做比例的方法,一个是把约束拖出来属性控制,一个直接在可视化界面进行约束的比例设置,简单看一下


上图对top设置距离父试图137的距离


改成比例处理就把父试图的top改成bottom(bottom在可视化视图里是667的高度,实际是667-tabbar高度49),再设置距离137/618

距离父试图的约束好搞,宽高的比例约束也好搞,但是子视图之间的约束不好搞,我们来看一下


ui要求间距


设置距离步数11像素

然后改成比例设置

先获取平级约束关系视图的最大Y


最大y是182.5

然后约束距离11/182.5= 0.06

然后再1- 0.06 = 0.94


先调转约束关系


清零constant和设置比例0.94

上述两种方式,无论哪种都失去了可视化工具的有点,快速方便

还有维护迭代界面更改都不好处理。

现在要怎么做

现在的做法只需要添加这么一段代码执行就可以全面比例控件的约束constant,可视化界面的约束正常使用就可以了


在创建完控件后调用控制器里的fixLayoutConstant(view:self.view)

注意事项:

一些旧代码用的屏幕宽高来比例的这些约束,使用了上述代码会调整constant值,所以有很多注意的地方要自己去看适不适合用,已经用了比例约束的界面就不需要再改了,所以也不建议把这个方法放在全局创建完控件后去调用,建议单独选择去调用吧!

升级一下,更多比例化

也可以对view做label类型的判断,处理字号,

对圆角view.layer.cornerRadius做比例处理。

结尾

写这篇文章前,很少在网上看到有类似的处理方法,不知道为什么,难道你们都用纯代码吗?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 翻译自“Auto Layout Guide”。 1 入门 1.1 理解自动布局 自动布局根据视图层级结构中视图上的...
    lakerszhy阅读 3,768评论 3 26
  • 目录 0、前言 一、Auto Layout前世今生 二、Auto Layout基础知识 1.Auto Layout...
    浮游lb阅读 25,075评论 3 90
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,171评论 25 709
  • 哈哈哈哈,好玩的视频 LexBurner,评论基本上是动漫,比较搞笑,吐槽 真纪,搞笑配音,上海话 本末测评,一个...
    10_阅读 822评论 0 4
  • 来之前我已写好底稿 爱你是一件伟大的事情 像我这般胆小的人 来向你表白 你会否觉得我的不自量力呢 还是你也同我这般...
    未明花香阅读 107评论 2 1