當兩個UILabel並排顯示時,如何設置約束,讓 leftLB 和 rightLB 正常顯示就很重要了。
方案1:左右兩個Label的寬度相同,則約束設置如下:
//添加標題約束,左邊的label [lb mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(bgView.mas_top); make.left.equalTo(bgView.mas_left).with.offset(16); make.height.equalTo(bgView.mas_height); make.width.equalTo(contentLB.mas_width); }]; //添加內容約束,右邊的label [contentLB mas_makeConstraints:^(MASConstraintMaker *make) { make.right.equalTo(bgView.mas_right).with.offset(-16); make.height.equalTo(lb.mas_height); make.left.equalTo(lb.mas_right).with.offset(20); make.top.equalTo(bgView.mas_top); make.width.equalTo(lb.mas_width); }];
方案2:左右兩個Label的寬度不相等,此時需要根據設置setContentHuggingPriority和setContentCompressionResistancePriority來控制哪邊的label拉伸,哪邊的label收縮。
首先說明:
ContentHuggingPriority ==> 表示當前的Label的內容不想被拉伸
ContentCompressionResistancePriority ==> 表示當前的Label的內容不想被收縮
默認情況下: HuggingPriority == 250, CompressionResistancePriority == 750
需要考慮2種情況,左右2邊數據均不足的時候,誰拉伸?左右2邊數據均充足的時候,誰收縮?
首先解決第一個問題,左右2邊數據均不足的時候,誰拉伸,這個由HuggingPriority控制。如果想讓左邊的內容拉伸,就設置左邊的數值<250(或讓右邊的>250);如果想讓右邊的內容拉伸,就設置右邊的數值<250 (或讓左邊的>250)。左右兩個Label對比,數值越大,越不想被拉伸,結果也不會被拉伸;數值越小,越容易被拉伸。(見圖1)
然后解決第二個問題,左右2邊數據都充足的時候,誰收縮,這個由ContentCompressionResistancePriority控制。如果想讓左邊的內容收縮,就設置左邊的數值<750(或讓右邊的>750);如果想讓右邊的內容收縮,就設置右邊的數值<750(或讓左邊的>750)。(見圖2)
圖1
圖2
參考鏈接:
https://www.jianshu.com/p/a04ad6a98a83