Masonry 优先级的坑

需求是这样的,一个view最大宽度不超过640,同时距离左右两边间距最少要24

//错误的写法

[view mas_remakeConstraints:^(MASConstraintMaker *make) {
        make.centerX.equalTo(@(0));
        make.width.equalTo(@(640)).priorityLow();
        make.left.lessThanOrEqualTo(@(24)).priorityHigh();  //这里加了High优先级会出问题
        make.right.lessThanOrEqualTo(@(-24)).priorityHigh();
 }];

正确的写法一,不要加priorityHigh()这个优先级,只用Low就可以

[view mas_remakeConstraints:^(MASConstraintMaker *make) {
        make.centerX.equalTo(@(0));
        make.width.equalTo(@(640)).priorityLow();
        make.left.lessThanOrEqualTo(@(24));
        make.right.lessThanOrEqualTo(@(-24));
 }];

正确的写法二

[view mas_remakeConstraints:^(MASConstraintMaker *make) {
        make.centerX.equalTo(@(0));
        make.width.equalTo(@(640)).priorityLow();
        make.left.lessThanOrEqualTo(@(24)).priorityHigh();
        make.right.lessThanOrEqualTo(@(-24)).priorityHigh();
 }];
//在约束外部,给view一个压缩方向的优先级
 [view setContentCompressionResistancePriority:(UILayoutPriorityDefaultLow) forAxis:(UILayoutConstraintAxisHorizontal)];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Masonry是一个轻量级的布局框架,它拥有自己的描述语法(采用更优雅的链式语法封装)来自动布局,具有很好可读性且...
    AngeloD阅读 3,403评论 0 9
  • 接《iOS知识点大总结一》 三十四、主线程操作UI(对UI进行更新只能在主线程进行) 解释:所谓的在主线程更新UI...
    RunningMan_Fly阅读 1,491评论 0 0
  • 需要记录的一点: 1.简介 基于NSLayoutConstraint封装的第三方布局框架,实现自动布局,采用链式编...
    棒棒德阅读 2,120评论 0 1
  • 目前iOS开发中大多数页面都已经开始使用Interface Builder的方式进行UI开发了,但是在一些变化比较...
    大雪山大轮寺大轮明王阅读 1,619评论 1 2
  • 更新布局方法 设置好约束以后,布局是如何更新的呢? Masonry简介 Masonry是一个轻量级的布局框架,它拥...
    bianruifeng阅读 399评论 0 0