现在可视化编程成为一种热流,大大的减少了我们程序开发的时间,提高了我开发的效率。但是作为一个程序员,我们不但要会新的知识,还要去学习旧的东西。如果我们去了公司接手的是老程序员写的,他没有用可视化,而是用了纯了代码约束,那么我们该如何去做?所以在这里我向大家简单的演示一下 Masonry 的使用,因为 Masonry 是大部分公司经常用到的一个纯代码约束第三方,它是对 NSLayoutConstraint 进行了分装,就好比 FMDB 是对 Sqlite 的封装,方便了程序员的使用
首先我们需要使用 cocoapods 去 pod search masonry
pod 'Masonry', '~> 0.6.3'
#######import <Masonry/Masonry.h>
1、简单视图创建
UIView *view1 = [[UIView alloc]init];
view1.backgroundColor = [UIColor yellowColor];
[self.view addSubview:view1];
[view1 mas_makeConstraints:^(MASConstraintMaker *make) {
// 设置view1的大小
make.size.mas_equalTo(CGSizeMake(100, 100));
//设置view1的中心点
make.center.equalTo(self.view);
}];
效果图1
这里我们需要注意一个地方,在创建视图的时候我们并不需要给它 frame ,直接 init 即可,直接将其添加到视图上,然后在对其进行约束设置。再次强调!!!先添加视图,再对其进行约束。约束用到 mas_makeConstraints 这个方法
2、边距设置
在 collectionView 的 Item 中,我们经常会设置 item 的EdgeInsets,那么 Masonry 也给我们提供了去设置边距的方法,我们一起来看一下
UIView *view2 = [[UIView alloc]init];
view2.backgroundColor = [UIColor redColor];
[view1 addSubview:view2];
[view2 mas_makeConstraints:^(MASConstraintMaker *make) {
// 设置view2距离view1的边距
make.edges.mas_equalTo(UIEdgeInsetsMake(10, 10, 10, 10));
}];
效果图2
3、综合
说了这么多,有人会说我写的都不在重点上,我们经常用到的约束都是距离某个view的上下左右多少,那么我们来综合演示一下
UIView *view3 = [[UIView alloc]init];
view3.backgroundColor = [UIColor redColor];
[self.view addSubview:view3];
[view3 mas_makeConstraints:^(MASConstraintMaker *make) {
// 设置view3的大小
make.size.mas_equalTo(CGSizeMake(300, 200));
// 设置view3的中心
make.center.equalTo(self.view);
}];
UIView *view4 = [[UIView alloc]init];
view4.backgroundColor = [UIColor blueColor];
[view3 addSubview:view4];
[view4 mas_makeConstraints:^(MASConstraintMaker *make) {
// view4和view3在一条水平线上
make.centerY.equalTo(view3.mas_centerY);
// view4的左边距离view3的左边10
make.left.equalTo(view3.mas_left).with.offset(10);
// view4的右边距离view3的中心点10
make.right.equalTo(view3.mas_centerX).with.offset(-10);
// view4的顶部距离view3的顶部10
make.top.equalTo(view3.mas_top).with.offset(10);
// view4的底部距离view3的底部10
make.bottom.mas_equalTo(view3.mas_bottom).with.offset(-10);
}];
UIView *view5 = [[UIView alloc]init];
view5.backgroundColor = [UIColor yellowColor];
[view3 addSubview:view5];
[view5 mas_makeConstraints:^(MASConstraintMaker *make) {
// view5和view3在一条水平线上
make.centerY.equalTo(view3.mas_centerY);
// view5的右边边距离view3的右边10
make.right.equalTo(view3.mas_right).with.offset(-10);
// view5的左边距离view3的中心点10
make.left.equalTo(view3.mas_centerX).with.offset(10);
// view5的顶部距离view3的顶部10
make.top.equalTo(view3.mas_top).with.offset(10);
// view5的底部距离view3的底部10
make.bottom.mas_equalTo(view3.mas_bottom).with.offset(-10);
}];
效果图3在这里为什么距离还有负的呢?这块一个点:我们iOS坐标系中上左为正,下右为负
网友评论