ios布局

多个label,一个显示完全,一个可压缩情况下使用Masonry

2017-11-21  本文已影响144人  向晚forever

左右两个Lab,左边的leftLab必须要现实完全;右边的rightLab距左边10pt,据右屏幕15pt。
要是先这个需求,如果只设置

[rightLab mas_makeConstraints:^(MASConstraintMaker *make) {
      make.centerY.equalTo(self.view);
      make.left.equalTo(leftLab.mas_right).offset(10);
      make.right.equalTo(self.view).offset(-15);
 }];

是不行的,你会发现当字体太长了,leftLab压缩了;文字太少了,又有问题。
这个时候你需要设置

[leftLab setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];//不可以被压缩,尽量显示完整
[rightLab setContentCompressionResistancePriority:UILayoutPriorityFittingSizeLevel forAxis:UILayoutConstraintAxisHorizontal];//宽度不够时,可以被压缩

//设置右边lab的约束 ,一定要设置优先级,优先级一般按照你的需求来
[rightLab mas_makeConstraints:^(MASConstraintMaker *make) {
      make.centerY.equalTo(self.view);
      make.left.equalTo(leftLab.mas_right).offset(10).priorityHigh();
      make.right.equalTo(self.view).offset(-15).priorityLow();
 }];

这样就OK了

还有一个相同的抗拉伸的方法

[lab setContentHuggingPriority:UILayoutPriorityRequired/*抱紧*/
        //forAxis:UILayoutConstraintAxisHorizontal];
上一篇下一篇

猜你喜欢

热点阅读