美文网首页ios布局
多个label,一个显示完全,一个可压缩情况下使用Masonry

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

作者: 向晚forever | 来源:发表于2017-11-21 17:56 被阅读144次

左右两个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];

相关文章

网友评论

    本文标题:多个label,一个显示完全,一个可压缩情况下使用Masonry

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