今天来说一说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。
上面只是简单介绍一下,下面进入演练中。
#1在view中添加一个label,设置约束左:150,右150,垂直居中,最好给label设置背景颜色,这样比较容易看清label的长度。
运行之后,显示为
为什么会显示成这个样子,我们的label的居然被压缩了,这并不是我们想要的结果,这是因为我们设置label的约束优先级(没有设置就是默认的1000)要高于label自身的size,此时左右约束加上label的固有宽度已经大于屏幕的宽度了,所以label会被压缩。
既然提到了压缩,那就说一说抗压缩属性对label内容的影响。
Content Compression Resistance Priority(抗压缩的优先级)是750,而我们控件约束默认的是1000,此时肯定会先满足控件约束的,要体现抗压缩性也就是说label不被压缩这时要将label的左或者右约束优先级设置小于750。此时就会先满足抗压缩,控件的约束就先放一边了。我是将label的右约束优先级改成650了,显示结果为:
好了,肯定会有小伙伴骂我,我靠,这什么鬼,不要惊讶,这是正常的,因为我设置的约束有点大了,并且文字没换行,小伙伴们可以自己调试一下,多动手才能印象深刻。