Masonary的价值
在iOS中,AutoLayout是一种灵活且高效的布局视图的方法,它通过约束简单明确的实现了多屏适配的功能,但是如果不用storyboard而使用,纯代码开发时,使用NSContraints就显得有些繁琐了,而Masonary就是创建自动布局的轻量级框架。
如何安装
- 新建一个xcode工程
- 在Podfile中 添加 pod ‘Masonry’ (提示:最好在vim下编辑,关闭中文输入法)
- 在viewController.m中
#import <Masonry.h>
- 复制Masonary提供的例子
UIEdgeInsets padding = UIEdgeInsetsMake(10, 10, 10, 10);
[view1 mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(superview.mas_top).with.offset(padding.top);
make.left.equalTo(superview.mas_left).with.offset(padding.left);
make.bottom.equalTo(superview.mas_bottom).with.offset(-padding.bottom);
make.right.equalTo(superview.mas_right).with.offset(-padding.right);
}];
直接执行是不行的,因为有些变量是还未定义的,
经过添加一段无聊的代码运行,还是报错 ld: library not found for -lPods-Masonary
注:有可能你运行也不会错,如果这样,就忽略好了,还有在原框架的安装时还提示添加prefix.pch,然后加上#define MAS_SHORTHAND
,我自己测试没有效果,不知道是不是RP的问题。
直接看运行的效果:
紫色的view1,与父视图的self.view上下左右都留了10的边距 这就是那段代码的作用,还有更简单的写法,
// 更短的写法
[view1 mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(superview).with.insets(padding);
}];
结束语
还有更多的更加细致的用法,我主要记录了自己在刚碰到这个框架遇到的问题,剩下的详情,请直接点击Masonary,英语不好,翻译不到位容易误人,
源代码
运行环境:Mac OS X 10.10.3 Xcode 6.3.1 iOS8.3 至少在这上面是绝对可以的。