label的抗压等级

如上图需求:

1.左侧label固定位置,不能压缩

2.中间label长度过长是可以被压缩

3.label3不能压缩,保持在label2的右侧,且不超过cell右侧

知识点:

1.uiview的方法,用于label2的压缩性能

- (void)setContentCompressionResistancePriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis API_AVAILABLE(ios(6.0));

参数1 UILayoutPriority:抗压等级,越高越无法压缩,越低越会被压缩

UILayoutPriorityRequired                    无法压缩

UILayoutPriorityDefaultHigh

UILayoutPriorityDefaultLow

UILayoutPriorityFittingSizeLevel        可以压缩

参数2 UILayoutConstraintAxis:方向

UILayoutConstraintAxisHorizontal 水平方向

UILayoutConstraintAxisVertical 垂直方向

2.Masonry中的优先级,用于label3的布局

priorityHigh() 高优先级,布局有冲突时优先使用

priorityLow() 低优先级,布局有冲突时不会使用

代码如下:

 UIView *bg = [UIView new];
    bg.backgroundColor = [UIColor lightGrayColor];
    
    // 固定宽度
    UILabel *label1 = [UILabel new];
    label1.text = @"固定宽度";
    [bg addSubview:label1];
    [label1 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerY.equalTo(bg);
        make.left.equalTo(bg).offset(10);
        
    }];
//    [label1 setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];//不可以被压缩,尽量显示完整
    
    // 可压缩不定长度文本
    UILabel *label2 = [UILabel new];
    label2.text = str;
    label2.textColor = [UIColor blueColor];
    [bg addSubview:label2];
    [label2 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(label1.mas_right).offset(10);
        make.centerY.equalTo(bg);
    }];
    [label2 setContentCompressionResistancePriority:UILayoutPriorityFittingSizeLevel forAxis:UILayoutConstraintAxisHorizontal];//宽度不够时,可以被压缩

    
    // 靠左固定
    UILabel *label3 = [UILabel new];
    label3.text = @"置顶";
    label3.textColor = [UIColor redColor];
    label3.layer.borderColor = [UIColor redColor].CGColor;
    label3.layer.borderWidth = 1;
    label3.layer.cornerRadius = 5;
    [bg addSubview:label3];
    [label3 mas_makeConstraints:^(MASConstraintMaker *make) {
        // 在设置left和right的时候,需要对left使用高优先级,需要对right使用低优先级。
        make.left.equalTo(label2.mas_right).offset(10).priorityHigh();
        make.right.equalTo(bg).offset(-10).priorityLow();
        make.centerY.equalTo(bg);
        make.height.mas_equalTo(30);
    }];
    return  bg;

补充:

抗拉方法

- (void)setContentHuggingPriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis API_AVAILABLE(ios(6.0));

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值