因为懒,所以之前几乎不用代码进行自动布局。但是使用xib和storyboard,总是有那么一些局限性。使用代码布局在某些时候就成了必须了?  。

iOS原生的布局方式太过麻烦。要么使用VFL(Visual Format Language),要么就是一条约束一行代码,虽然在iOS9之后使用NSLayoutAnchor会方便点。但在这个三天两头改需求的时代,严重浪费自己的时间啊!主流的几个自动布局库SnapKitCartography...总觉得还是有点不方便。那就只能靠自己了。

要求

当初开始构思怎么样才可以比较方便的布局时。最原始的要求有两点:1、可以像SnapKit的链式调用,这样可以一行代码添加多个约束。2、使用Swift的运算符重载。

就像:

view1.left.top == view2.left.top

view1.width.height == [100, 200]

然后有些组合的属性方便使用,比如:

view1.center == superView.center

实现

依据以上的需求,自己就写了Bees。为了防止命名空间的冲突,就像RxSwift一样给属性加了前缀。所以最后使用起来是这样的:

view1.bee.size == CGSize(width: 111, height: 111)

view1.bee.center == superView.bee.center

view2.bee.edge == UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)

view3.bee.right.bottom == superView.bee.right.bottom - 10

有些约束根据代码逻辑要进行修改,就用以下方法取得约束数组。

let constraints = view1.bee.left.top == view2.bee.left.top

当然对于UILayoutGuide的支持也是必不可少的,使用起来和UIView是一样的。

view.bee.bottom == layoutGuide.bee.bottom

完整的使用文档在:使用指南

Github地址:github.com/hongcaiyu/B…

转载于:https://juejin.im/post/5a694e0551882573485a23cc

更加优雅的iOS自动布局相关推荐

  1. iOS 自动布局框架 – Masonry 详解

    来源:伯乐在线 - 刘小壮 如有好文章投稿,请点击 → 这里了解详情 如需转载,发送「转载」二字查看说明 目前iOS开发中大多数页面都已经开始使用Interface Builder的方式进行UI开发了 ...

  2. ios自动布局(1)

    本文转载与 :http://blog.csdn.net/pucker/article/details/41832939 今年如约放出了新的iPhone 6与iOS 8系统,SDK针对新的设备和系统的界 ...

  3. iOS自动布局框架-Masonry详解

    目前iOS开发中大多数页面都已经开始使用Interface Builder的方式进行UI开发了,但是在一些变化比较复杂的页面,还是需要通过代码来进行UI开发的.而且有很多比较老的项目,本身就还在采用纯 ...

  4. iOS自动布局-VFL格式约束

    AutoLayout  VFL可视化格式约束 一.VFL简介 iOS的自动布局约束主要有三种方式, 1.可视化界面中添加布局,比如在Storyboard xib. 2.代码添加当个约束 3.VFL格式 ...

  5. iOS自动布局之autoresizingi

    对于iOS的app开发者来说,不会像Android开发者一样为很多的屏幕尺寸来做界面适配,因此硬编码的坐标也能工作良好,但是从设计模式上来说这不是好的做法.而且也还有一些问题,如iPhone5的适配, ...

  6. ios怎么引入masonry_详解 iOS 自动布局框架 Masonry

    集成方式 Masonry支持CocoaPods,可以直接通过podfile文件进行集成,需要在CocoaPods中添加下面代码: pod 'Masonry' Masonry 学习建议 在 UI 开发中 ...

  7. iOS 自动布局和弹性盒子

    当同事问到我这个问题时,我脑子中直接冒出了一个词"弹性盒子". 问题: 有一个 Cell 中有 4 个并排排列的控件,布局如下图所示: 假设: 1.        这些控件高度和y ...

  8. 学会爱上iOS自动布局(Auto Layout)

    本文翻译自Yari Dareglia的LEARN TO LOVE AUTO LAYOUT文章 先生们,女士们,让我们以正确的心态开始本教程吧:自动布局就是简单! 我花了一段时间来掌握自动布局是如何工作 ...

  9. iOS自动布局(AutoLayout)之 NSLayoutAnchor

    自动布局(AutoLayout)之 NSLayoutAnchor 方式使用 AutoLayout 自动布局(AutoLayout)是iOS6引入的关系布局,实现动态位置和多视图关系的布局方式,是对fr ...

最新文章

  1. springmvc工作流程简单易懂_三极管的结构和工作特性,简单易懂
  2. 用protoc-gen-lua生成PB的lua代码
  3. 如何让签到成为提升用户活跃度的利器
  4. [Python微信开发] 一.itchat入门知识及微信自动回复、微信签名词云分析
  5. java perm 查看_高级 Java 必须掌握:JVM 分析工具和查看命令,超详细
  6. vue 日历 vue-calendar
  7. 如何快速生成100万不重复的8位随机编号?
  8. [云原生专题-11]:容器 - 如何构建自己的docker镜像:Docker Dockerfile
  9. Mybatis插件之自动生成不使用默认的驼峰式
  10. c++ 软件下载 Dev cpp下载
  11. python表白程序-python告白程序
  12. 2018年计算机基础应用教程,全国计算机等级考试一级教程:计算机基础及Photoshop应用(2018年版)...
  13. 短信验证码登录的实现
  14. jumpserver版本升级(1.3.1升级到最新版)
  15. 一场羽绒服直播GMV狂涨430%,反季热销的秘诀原来是这个?
  16. 考研数据结构之队列(3.3)——练习题之设计一个循环队列,用front和rear分别作为队头和队尾指针,另外用一个标志tag表示队列是空还是不空来设计队列的结构和相关基本运算算法(C表示)
  17. 报错解决Error parsing Mapper XML
  18. 公司董事长——50w年薪程序员从顶端到谷底,一个APP从启动到主页面显示经历了哪些过程
  19. Snort 入侵检测系统简介
  20. 开源软件FreeCAD0.20编译源码修改名称、换名称

热门文章

  1. Access denied (java.lang.RuntimePermission getClas
  2. Oracle存储过程中异常Exception的捕捉和处理
  3. [iPhone-Sqlite3]sqlite3_prepare_v2() 不返回 SQLITE_OK,调试
  4. 向基于Linux的Oracle RAC 10g集群添加新节点
  5. java初学者必看——J2SE小结
  6. ubuntu下man帮助文档不全怎么办?如何解决?
  7. Object-C 入门介绍
  8. SQL字符串基本操作汇总
  9. WICC上了全球很多家交易所,它是一种资产和流动性的代表
  10. 维基链超级节点竞选开展如火如荼