美文网首页
HuggingPriority和CompressionResis

HuggingPriority和CompressionResis

作者: 艺术农 | 来源:发表于2018-08-21 17:08 被阅读18次

    有时我们在给UILabel或者UITextField这种带IntrinsicHeight和IntrinsicWidth类型的视图做约束时,约束的结果会出乎我们的意料。
    例如下面这样:

        UILabel *label1 = [[UILabel alloc] init];
        label1.text = @"我是label1";
        label1.textColor = [UIColor blackColor];
        label1.backgroundColor = [UIColor purpleColor];
        [self.view addSubview:label1];
    
        UILabel *label2 = [[UILabel alloc] init];
        label2.text = @"我是label2";
        label2.backgroundColor = [UIColor yellowColor];
        label2.textColor = [UIColor blackColor];
        [self.view addSubview:label2];
    
        [label1 mas_makeConstraints:^(MASConstraintMaker *make) {
            make.left.equalTo(self.view);
            make.top.equalTo(self.view);
        }];
    
        [label2 mas_makeConstraints:^(MASConstraintMaker *make) {
            make.right.equalTo(self.view);
            make.top.equalTo(self.view);
            make.left.equalTo(label1.mas_right);
        }];
    
    561534842242_.pic.jpg

    因为UILabel默认的hugging优先级是250,当2个UILabel或者UITextField视图需要拉伸或者压缩时,系统不知道该拉伸谁或者压缩谁,这时需要我们手动的设置优先级。
    上面的情况我们可以设置下label1的HuggingPriority更高,那么系统会优先压缩label1。

        [label1 setContentHuggingPriority:UILayoutPriorityDefaultHigh
                                  forAxis:UILayoutConstraintAxisHorizontal];
    

    同理,设置CompressionResistancePriority级别更低也是可以的。设置完后的效果是下面这样的。

    551534842145_.pic.jpg

    相关文章

      网友评论

          本文标题:HuggingPriority和CompressionResis

          本文链接:https://www.haomeiwen.com/subject/xzujiftx.html