Masonry学习之复合edges

先看结果:
这里写图片描述

再看代码:

- (id)init {
    self = [super init];
    if (!self) return nil;

    UIView *lastView = self;
    for (int i = 0; i < 10; i++) {
        UIView *view = UIView.new;
        view.backgroundColor = [self randomColor];
        view.layer.borderColor = UIColor.blackColor.CGColor;
        view.layer.borderWidth = 2;
        [self addSubview:view];

        [view mas_makeConstraints:^(MASConstraintMaker *make) {
            make.edges.equalTo(lastView).insets(UIEdgeInsetsMake(5, 10, 15, 20));
        }];

        lastView = view;
    }

    return self;
}
- (UIColor *)randomColor {
    CGFloat hue = ( arc4random() % 256 / 256.0 );  //  0.0 to 1.0
    CGFloat saturation = ( arc4random() % 128 / 256.0 ) + 0.5;  //  0.5 to 1.0, away from white
    CGFloat brightness = ( arc4random() % 128 / 256.0 ) + 0.5;  //  0.5 to 1.0, away from black
    return [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1];
}

至于循环10次来添加约束这个逻辑很容易理解,我关注的是edges这个复合数据结构。可以想象一下,我就布局一个简单的视图在父视图上,要确定其上下左右,可以使用基本布局中的方式:

make.top.equalTo(superview.top).offset(10);
make.left.equalTo(superview.left).offset(10);
make.bottom.equalTo(superview.bottom).offset(-10);
make.right.equalTo(superview.right).offset(-10);

也可以使用常量:

make.top.equalTo(@10);
make.left.equalTo(@10);
make.bottom.equalTo(@-10);
make.right.equalTo(@-10);

也可以使用edges:

make.edges.equalTo(superview).insets(UIEdgeInsetsMake(10, 10, 10, 10));

你想用哪个?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值