Masonry 布局不等宽的标签并自动换行

效果
image.png
demo
NSArray *array = @[@"一",@"二二",@"三三三",@"四四四四",@"五五五五五",@"一",@"二二",@"三三三",@"四四四四",@"五五五五五",@"一",@"二二",@"三三三",@"四四四四",@"五五五五五",@"一",@"二二",@"三三三",@"四四四四",@"五五五五五"];
    
    UIButton *listButton;
    
    __block float buttonRight;
    
    for (int i = 0; i < array.count; i++) {
        
        NSString *title = array[i];
        
        CGFloat titleW = [title sizeWithFont:Font(14) maxSize:CGSizeMake(MAXFLOAT, MAXFLOAT)].width + 20;
        
        UIButton *button = [UIButton new];
        button.backgroundColor = WHColor_1779ff;
        [button setTitle:title forState:UIControlStateNormal];
        [button setTitleColor:WhiteColor forState:UIControlStateNormal];
        button.titleLabel.font = Font(14);
        button.layer.cornerRadius = 10;
        button.layer.masksToBounds = YES;
        [self addSubview:button];
        [button mas_makeConstraints:^(MASConstraintMaker *make) {
            
            if (listButton) {
                
                buttonRight = buttonRight + 15 + titleW;
                
                if (buttonRight > SCREEN_WIDTH) {
                    //下一排的第一个
                    make.top.mas_equalTo(listButton.mas_bottom).offset(15);
                    make.left.mas_equalTo(self.tagImageView).offset(0);
                    buttonRight = 30 + titleW;
                }else{
                    //非第一个
                    make.top.mas_equalTo(listButton.mas_top).offset(0);
                    make.left.mas_equalTo(listButton.mas_right).offset(15);
                }
                
                
                
            }else{
                //第一个
                
                make.top.mas_equalTo(tagView.mas_bottom).offset(25);
                make.left.mas_equalTo(self.tagImageView).offset(0);
                buttonRight = 30 + titleW;
            }
            make.size.mas_equalTo(CGSizeMake(titleW, 20));
            
            
        }];
        
        listButton = button;
        
        
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值