当两个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();
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(-);
make.height.equalTo(lb.mas_height);
make.left.equalTo(lb.mas_right).with.offset();
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://stackoverflow.com/questions/15850417/cocoa-autolayout-content-hugging-vs-content-compression-resistance-priority

https://www.jianshu.com/p/a04ad6a98a83

setContentHuggingPriority和setContentCompressionResistancePriority的使用的更多相关文章

  1. Masonry使用注意事项

    1 理解自身内容尺寸约束与抗压抗拉 自身内容尺寸约束:一般来说,要确定一个视图的精确位置,至少需要4个布局约束(以确定水平位置x.垂直位置y.宽度w和高度h).但是,某些用来展现内容的用户控件,例如文 ...

  2. Masonry的使用

     1.//添加了这个宏,就不用带mas_前缀了 #define MAS_SHORTHAND //添加了这个宏,equalTo就等于mas_equalTo #define MAS_SHORYHAND_G ...

  3. Masonry学习分享

    不完整目录 •UIScrollView 应用Masonry的正确用法 •tableHeaderView使用Masonry •同向文字显示优先级 1.基础篇 1.1基础使用 1.1.1运行效果 1.1. ...

  4. ios auto layout demystified (一)

    Ambiguous Layout 在开发过程中,你可以通过调用hasAmbiguousLayout 来测试你的view约束是否足够的.这个会返回boolean值.如果有一个不同的frame就会返回ye ...

  5. iOS-布局-Masonry-优先级

    一.AutoLayout有两个重要的属性: 1.Content Compression Resistance 百度翻译(内容压缩抗力) 2.Content Hugging    百度翻译(内容拥抱) ...

  6. 专家来了-提测-改bug-上线10号

    集成那天,同事帮忙改了三个bug, 适配ios6约束,方法被调用两次, 郑晓杨吃饭,好像还欠我钱呢 Product-archive  打包 ------------------------------ ...

  7. UIkit框架之Uivew

    1.继承链:UIresponder:NSObject 2.通过使用 addGestureRecognizer:方法可以为视图添加手势 3.下面的属性都可以用来用于动画 @property frame ...

  8. 【转】有趣的Autolayout示例-Masonry实现

    原文网址:http://tutuge.me/2015/05/23/autolayout-example-with-masonry/ 好久没有写Blog了,这段时间有点忙啊=.=本文举了3个比较有“特点 ...

  9. AutoLayout框架Masonry使用心得

    AutoLayout框架Masonry使用心得 字数1769 阅读1481 评论1 喜欢17 我们组分享会上分享了页面布局的一些写法,中途提到了AutoLayout,会后我决定将很久前挖的一个坑给填起 ...

随机推荐

  1. 20145219 《Java程序设计》第08周学习总结

    20145219 <Java程序设计>第08周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口,使用日志的起点是log ...

  2. 选择使用Spring框架的原因(Spring框架为企业级开发带来的好处有哪些)

  3. MySQL explain 、explain extended用法

    explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了,如: explai ...

  4. windows 服务器恢复选项恢复

    用户的服务器成了酱紫

  5. jmeter-JSON Path Assertion(对响应的json数据进行断言)

    1,通过plugin manager 安装json  pllugins

  6. Ubuntu 通过APT安装Tomcat

    Ubuntu 通过APT安装Tomcat 安装 sudo apt-get install tomcat8 tomcat8-docs tomcat8-examples tomcat8-admin # s ...

  7. [ SSH 两种验证方式原理 ]

    SSH登录方式主要分为两种: 1. 用户名密码验证方式 说明: (1) 当客户端发起ssh请求,服务器会把自己的公钥发送给用户: (2) 用户会根据服务器发来的公钥对密码进行加密: (3) 加密后的信 ...

  8. lightoj1197区间素数筛

    模板题,不过好像有点问题,当a==1的时候,答案把一也算进去了,要减去 #include<map> #include<set> #include<cmath> #i ...

  9. quartz简单应用

    pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3 ...

  10. puppet笔记

    简介: puppet是一种Linux.Unix平台的集中配置管理系统,使用ruby语言,可管理配置文件.用户.cron任务.软件包.系统服务等.puppet把这些系统实体称之为资源,puppet的设计 ...