HuggingPriority和CompressionResistancePriority

有時(shí)我們?cè)诮oUILabel或者UITextField這種帶IntrinsicHeight和IntrinsicWidth類型的視圖做約束時(shí),約束的結(jié)果會(huì)出乎我們的意料。
例如下面這樣:

    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

因?yàn)閁ILabel默認(rèn)的hugging優(yōu)先級(jí)是250,當(dāng)2個(gè)UILabel或者UITextField視圖需要拉伸或者壓縮時(shí),系統(tǒng)不知道該拉伸誰(shuí)或者壓縮誰(shuí),這時(shí)需要我們手動(dòng)的設(shè)置優(yōu)先級(jí)。
上面的情況我們可以設(shè)置下label1的HuggingPriority更高,那么系統(tǒng)會(huì)優(yōu)先壓縮label1。

    [label1 setContentHuggingPriority:UILayoutPriorityDefaultHigh
                              forAxis:UILayoutConstraintAxisHorizontal];

同理,設(shè)置CompressionResistancePriority級(jí)別更低也是可以的。設(shè)置完后的效果是下面這樣的。

551534842145_.pic.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容