UILabel的抗压缩、抗拉伸、以及控件的约束简述
今天来说一说UILabel的约束设置问题
首先主要介绍:Priority(控件约束的优先级)、Content Hugging Priority(控件抗拉伸优先级)、Content Compression Resistance Priority(控件抗压缩优先级),好的,开始一个个介绍。
1.Priority控件中每一个约束都有优先级,在xib和storyboard中很容易看到,如图:

在这里可以设置约束的优先级,优先级的取值范围是1~1000,控件的约束会有限满足优先级高的,控件的约束默认都是1000。
2.Content Hugging Priority(控件抗拉伸优先级) 优先级越高越不容易被拉伸,默认是250。
3.Content Compression Resistance Priority(控件抗压缩优先级) 和拉伸一样,优先级越高的越不容易和压缩,默认是750。
上面只是简单介绍一下,下面进入演练中。
在view中添加一个label,设置约束左:150,右150,垂直居中,最好给label设置背景颜色,这样比较容易看清label的长度。

运行之后,显示为

为什么会显示成这个样子,我们的label的居然被压缩了,这并不是我们想要的结果,原因请接着往下看。
Content Compression Resistance Priority(抗压缩的优先级)是750,而我们控件约束默认的是1000,此时肯定会先满足控件约束的,所以label被压缩了。要体现抗压缩性也就是说label不被压缩这时要将label的左或者右约束优先级设置小于750。此时就会先满足抗压缩,控件的约束就先放一边了。我是将label的右约束优先级改成650了,显示结果为:

好了,肯定会有小伙伴骂我,我靠,这什么鬼,不要惊讶,这是正常的,因为我设置的约束有点大了,并且文字没换行,小伙伴们可以自己调试一下,多动手才能印象深刻。
接下来演示被拉伸的效果。
此时我们设置label的左右距屏幕边约束为60,优先级设置默认的1000,显示结果为:

是的,你会发现label被拉伸了,这是因为label的抗拉伸优先级是250,而label约束的优先级是1000,这是系统肯定会优先考虑label的约束,所以label被拉伸了。当我们设置label右约束为240时,当然也可以设置左侧,注意:可以同时设置左右约束的优先级,但是如果你设置的都小于250时,不能让label的左右的优先级相等,这是为什么呢?因为既然约束的优先级小于抗拉伸的优先级label肯定不会被拉伸,这时label的左右约束优先级还一样,你让系统执行那一个约束?如果都执行那就是label被拉伸,如果都不执行label还会显示吗?所以这样设置会当场报错,看来系统也是很明智的。好了,正确设置完之后结果会显示这样:

这样label没有被拉伸,显示了它的固有尺寸。
把自己的理解写出了,有不对的地方请小伙伴们指正。
UILabel的抗压缩、抗拉伸、以及控件的约束简述的更多相关文章
- Masonry 抗压缩 抗拉伸
约束优先级: 在Autolayout中每个约束都有一个优先级, 优先级的范围是1 ~ 1000.创建一个约束,默认的优先级是最高的1000 Content Hugging Priority: 该优先级 ...
- iOS Masonry 抗压缩 抗拉伸
约束优先级: 在Autolayout中每个约束都有一个优先级, 优先级的范围是1 ~ 1000.创建一个约束,默认的优先级是最高的1000 Content Hugging Priority: 该优先级 ...
- [转 载] android 谷歌 新控件(约束控件 )ConstraintLayout 扁平化布局
序 在Google IO大会中不仅仅带来了Android Studio 2.2预览版,同时带给我们一个依赖约束的库. 简单来说,她是相对布局的升级版本,但是区别与相对布局更加强调约束.何为约束,即控件 ...
- iOS开发小技巧--UIScrollView内部子控件添加约束的注意点
注意:用UIScrollView时布局子控件的时候,不要相对于UIScrollView来添加约束,这样做不是设置子控件的位置,反而是设置了UIScrollView的contentSize 子控件的尺寸 ...
- 5、利用控件TVCLZip和TIdFTP压缩文件并上传到FTP的线程单元pas 改进版
用到临界区 保护写日志的函数: 递归函数 删除目录下的所有文件: 循环创建或判断FTP的目录: 可改进的地方:循环压缩深层次目录的所以文件: 实现断点续传,或断点下载: {************** ...
- Android开发之基本控件和详解四种布局方式
Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方 ...
- Android-基本控件和详解四种布局方式
转自:https://www.cnblogs.com/ludashi/p/4883915.html 一.常用基本控件 1.TextView 看到Android中的TextView, 我不禁的想到了iO ...
- Qt 控件随窗口缩放
在Qt的界面设计中,我们有时候希望窗口在最大化的时候,上面的控件也跟着缩放,那么我们就需要调整控件的SizePolicy属性,关于这个属性的讲解请参见我之前的博客Qt SizePolicy 属性,由于 ...
- [iOS微博项目 - 1.8] - 各种尺寸图片加载 & 控件不显示研究
A. 图片的加载: [UIImage imageNamed:@"home"]; 加载png图片 一.非retina屏幕 1.3.5 inch(320 x 480) * ...
随机推荐
- webstorm比dreamweaver强大的地方 转
比dw强大的地方有: . 对js的开发有长足的支持,那些自动提示,代码主题,调试之类的我就不说了,主要是对流行技术的支持,比如Node.js,less,sass,jq,ext,prototype等框架 ...
- SEO策略与细节:细节决定成败
昨天展开seo探讨会.听了一场医疗界seo大神的讲座.收益匪浅今天讲他的演讲内容整理出来与大家分享.希望对医疗界的seo带来些帮助.站长们一起成长! 一.首页 1.元标签设置 标题:上海癫痫病医院哪家 ...
- new thoughts over function pointers
Previous works do not relate to function pointers, but reading some documents reading and learning S ...
- java内部类继承--构造函数传参
/: innerclasses/InheritInner.java // Inheriting an inner class. class WithInner { class Inner {} } / ...
- 编译hadoop2.4
摘自 http://www.aboutyun.com/thread-8130-1-1.html.http://www.dataguru.cn/forum.php?mod=viewthread& ...
- sonar tomacat配置
最近在学习Sonar,配置了好几天,才搭建起来环境,为自己的学习能力感到汗颜,赶紧在此记录一下,所谓好记性不如烂笔头. 1.Sonar介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java ...
- poj 2594 Treasure Exploration(最小路径覆盖,可重点)
题意:选出最小路径覆盖图中所有点,路径可以交叉,也就是允许路径有重复的点. 分析:这个题的难点在于如何解决有重复点的问题-方法就是使用Floyd求闭包,就是把间接相连的点直接连上边,然后就是求最小路径 ...
- 7--OC中NSLog函数输出格式详解
OC中NSLog函数输出格式详解 • %@ 对象 • %d, %i 整数 • %u 无符整形 • %f 浮点/双字 • %x, %X 二进制整数 • %o 八进制整数 • %zu size_t • % ...
- 转:利用ant与jmeter实现负载测试自动化
性能测试一直以来都是测试领域一个令人争议的话题.测试的参考标准.评判依据及测试的方法选择都很难有一个统一的说法.但无论如何,对于需要能够承受一定压力而运行的程序来说,进行其进行功能和性能测试是一个必不 ...
- 转:Warning -26490: File name in a multipart submit is missing or empty.解决方法
录制测试上传文件脚本,回放报Warning -26490: File name in a multipart submit is missing or empty. Using an empty fi ...