Masonry實現動態寬度依賴布局


Masonry 大家都不陌生,現在簡單分享下動態寬度使用心得。先簡述下問題,如圖:

A、C寬度根據文本內容自適應,B距離A、C之間的間距都是10pt。

 

 直接上代碼:

1、A、C不設置寬度,其他約束按照正常設置

[self.bgView addSubview:self.leftBtn];
    [self.leftBtn mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.bgView);
        make.top.equalTo(self.bgView.mas_top).offset(15);
        make.height.mas_equalTo(16);
    }];
    
    [self.bgView addSubview:self.rightBtn];
    [self.rightBtn mas_makeConstraints:^(MASConstraintMaker *make) {
        make.right.equalTo(self.bgView);
        make.top.equalTo(self.bgView);
        make.height.mas_equalTo(18);
    }];
    
    self.nameLabel = [[UILabel alloc]init];
    self.nameLabel.font = IC_TITLE_FONTNAMEWITHSIZE_16;
    self.nameLabel.textColor = XZWL_COLOR_333333;
    self.nameLabel.textAlignment = NSTextAlignmentLeft;
    [self.bgView addSubview:self.nameLabel];
    [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.right.equalTo(self.rightBtn.mas_left).offset(-10);
        make.left.equalTo(self.leftBtn.mas_right).offset(10);
        make.centerY.equalTo(self.leftBtn);
        make.height.mas_equalTo(16);
    }];

2、在賦值地方設置A、C寬度

 [self.leftBtn setTitle:leftStr forState:UIControlStateNormal];
    CGSize size = [self.leftBtn sizeThatFits:CGSizeZero];
    [self.leftBtn mas_updateConstraints:^(MASConstraintMaker *make) {
        make.width.mas_equalTo(size.width);
    }];
    
    CardDetailList *detailsModel = model.cardDetailList.firstObject;
    self.nameLabel.text = ObjErrorCheck(detailsModel.title);
    
    if (ObjErrorCheck(detailsModel.statusName).length) {
        self.rightBtn.hidden = NO;
        [self.rightBtn setBackgroundColor:[iComeCarrerCircleColorTool getEvaCardStateColor:detailsModel.statusColorType]];
        [self.rightBtn setTitle: ObjErrorCheck(detailsModel.statusName) forState:UIControlStateNormal];
        CGSize size = [self.rightBtn sizeThatFits:CGSizeZero];
        [self.rightBtn mas_updateConstraints:^(MASConstraintMaker *make) { make.width.mas_equalTo(size.width); }];
    } else {
        self.rightBtn.hidden = YES;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM