Masnory 多个控件与优先级

1.参考文章
Masonry介绍与使用实践:快速上手Autolayout
IOS自适应前段库-Masonry的使用
我是阅读完成这两篇才开始写masnory的约束的。

2.
当uilabel左右之间相互适应的时候。因为不用设置uilabel左边和右边的宽度,即左边的label不用设置靠右距离,右边的label不用设置靠左的距离,有可能出现右边文字过长造成覆盖在左边文字上,或者相反,这时候需要设置

make.right.equalTo(self.rightLabel.mas_left);

leftlabel的右边等于rightlabel的左边,这样可能出现两种情况。因为uilalbel左+ uilabel右边 = 总宽度

所以会造成uilabel左边宽度变大 或者 uilabel 右边宽度变大。此时masnory会默认左边宽度变大

如果这时候需要在左边label后边添加一个紧紧贴着的红点,或者一个uiimage ,就会发现被贴到右边label附近了,因为左边的label被拉伸了,大半行都被占领了,这时候因为你又不能设置masnory label的宽度,因为label的宽度是由文字自适应的,现在还没传递文字,自然宽度也不知道,于是就有个方法来解决问题

改变先前的那行代码为

make.right.lessThanOrEqualTo(self.rightLabel.mas_left);

是指让leftlabel的右边*小于或者等于*rightlabel的左边,这样就会使得rightlabel的约束的优先级大于或者等于左边的约束,因为leftlabel+ rightlabel = 总宽度,这时候就会将rightlabel向左拉伸,leftLabel保持不变了,这时候小红点的位置就不会错了。就是靠着左边了

        self.titleLabel = [UILabel new];
        [self addSubview:self.titleLabel];
        self.redPot = [UILabel new];
        [self addSubview:self.redPot];
        self.rightLabel = [UILabel new];
        [self addSubview:self.rightLabel];

        [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerY.equalTo(self);
            make.left.equalTo(@(16));
            make.right.lessThanOrEqualTo(self.rightLabel.mas_left);
        }];

        [self.redPot mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerY.equalTo(self).offset(-8);
            make.left.equalTo(self.titleLabel.mas_right).offset(3);
            make.width.height.mas_equalTo(@(8));
        }];

        [self.rightLabel mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerY.equalTo(self);
            make.right.equalTo(@(-30));
        }];

3.不要赋给tableview的headview使用masnory。不会起效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值