美文网首页程序员
更加优雅的iOS自动布局

更加优雅的iOS自动布局

作者: 彩虹的洪 | 来源:发表于2017-12-18 16:49 被阅读0次

    因为懒,所以之前几乎不用代码进行自动布局。但是使用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地址:https://github.com/hongcaiyu/Bees

相关文章

  • 更加优雅的iOS自动布局

    因为懒,所以之前几乎不用代码进行自动布局。但是使用xib和storyboard,总是有那么一些局限性。使用代码布局...

  • Masonry 学习笔记

    一个轻量级的布局框架, 同时支持 iOS 和 Mac OS X, 采用更优雅的链式语法封装自动布局,语法优雅, 帮...

  • iOS开发之 自动布局

    iOS开发之自动布局AutoLayout 目录: 1 iOS自动布局简介2 iOS自动布局AutoLayout(代...

  • Masonry原理与链式编程

    在iOS开发中,Masonry是我们常用的一个轻量级的布局框架,它以链式语法的形式优雅的实现了自动布局。下面我们以...

  • 【OC梳理】自动布局

    自动布局基础篇 关于自动布局的基本使用,参考网上的文章即可,如:iOS开发-自动布局篇:史上最牛的自动布局教学! ...

  • App架构方方面面

    布局 揭秘 iOS 布局 Masonry源码解析 自动布局&绝对布局autolayoutautolayout 动画...

  • iOS 常用布局方式之Constraint

    级别: ★★☆☆☆标签:「iOS AutoLayout」「iOS 自动布局」「NSLayoutConstrain...

  • Facebook开源跨平台前端布局引擎Yoga

    1、背景 iOS、Android、web都有自己的布局系统: iOS:自动布局 autolayout。Androi...

  • swift中Masonry的布局

    iOS SnapKit自动布局使用详解(Swift版Masonry) 对于自动布局: 我们在 StoryBoard...

  • NSLayoutAnchor与Snapkit简易布局动画对比(s

    ios自带自动布局太过繁琐,所以一直采用第三方框架Snapkit的自动布局。NSLayoutAnchor(ios9...

网友评论

    本文标题:更加优雅的iOS自动布局

    本文链接:https://www.haomeiwen.com/subject/ydjmwxtx.html