什么是 masonry

这是官方的一个说明:

Masonry is a light-weight layout framework which wraps AutoLayout with a nicer syntax. Masonry has its own layout DSL which provides a chainable way of describing your NSLayoutConstraints which results in layout code that is more concise and readable. Masonry supports iOS and Mac OS X.

它为 iOS 以及 Mac 的开发提供了一个轻量级的布局框架,用更好的代码语法封装了 AutoLayout。 用更简短代码来设置自己的 NSLaytouConstranits。

可以做什么

在以前的开发过程中,view 要显示在屏幕的哪个位置是用 NSLayoutConstraints 来约束的,用现在的眼光来看待 NSLayoutConstraints,它好处是可以让我们更详细的了解约束的方式以及各种参数的作用。随之带来的是代码兀余、开发效率低下的结果。

一个简单的例子:让一个子视图 view1 大小填满它的父视图 superview ,并且上下左右空出 10pt。用 NSLayoutConstraints 来描述这个需求的代码类似是这样子:

实现这样的需求,需要以上代码,而这例子仅仅是要包含一个子视图 view1 ,那如果在这时候插入两个以及更多的时候呢?代码量自然不言而喻。

来看看 masonry 是怎么描述的:

甚至还能有更短的:

类似这样:

是不是简单了很多?

使用方法

介绍了 masonry 以及它的作用之后,下面我们根据例子来试用一下,看看效果。

首先使用前: 用 CocoaPods 来安装,Podfile 中 增加 pod ‘Masonry’ ,然后在项目当前的文件下 #import “Masonry.h”,
如果之前有定义了 pch 文件可以直接在里面 #define MAS_SHORTHAND。这些是官方提供的安装方式

开始使用,先看这么个需求(其实也是上面例子中的引申):让一个子视图 view1 的大小填满它的父视图 superview ,并且上下左右空出 10pt。在 view1 里面增加一个 view2 跟两个按钮,这两个按钮分别来控制 view2 的显示位置以及使用 masonry 的一些方法特性。

必须按照以下步骤来做,否则会抛出异常导致崩溃:

  1. 子 View 初始化;
  2. 子 View 包含在父 View 上addSubViews:;
  3. 然后再做约束。

!

贴出代码:

最后

谢谢大家

参考阅读:

Masonry

发表评论

电子邮件地址不会被公开。 必填项已用*标注