美文网首页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