优先级布局(UILayoutPriority)
2017-08-09 本文已影响0人
Mr_C_0420
自动布局
现在项目使用自动布局的非常多,我说的是纯代码,不包括 xib 和storeyboard, 因为这两个我用的不多.
有一些第三方的框架,对自动布局支持的很好,但是也会有一些问题,比如布局优先级问题,比如:
很简单的一个页面,但是这里是有问题的,
文字数和类型的长度是不固定,我们不能直接设置它的宽度,在自动布局的时候,
给他设置的约束是:右边距离屏幕20px,y 方向和作者名对齐,宽度没有设置.
作者名称也是不确定的,因此也不能设置宽度,可能你会说可以计算出来,然后设置约束,当然这是一个解决方案,但是不够简单,既然有了自动布局,优先考虑的还是从自动布局方面考虑
而作者的约束: 左边的约束好说 右边不好确定,宽度不好确定.
这种情况下,会出现第一个行那种问题,由于作者名称太长,积压了文字数和类型,显示不完全,出现了问题,不用想 一定是约束有问题,其实就是作者和类型都没办法确定宽度 都没有设置完全约束,但是这时候默认显示完全了作者名的约束,我们可以设定优先显示完全文字和类型,这两个的优先级更高,就能解决这个问题.
设置优先级方法:
- (void)setContentCompressionResistancePriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis NS_AVAILABLE_IOS(6_0);
第一个参数(priority):通俗来讲,不同的优先级,表示显示的完整性的高低,优先级越高,那么在父控件无法在无越界的情况下的情况下,就会优先先把优先级高的控件显示完整,然后再依次显示优先级低的
第二个参数(axis):代表在什么方向上进行优先级限制
项目中代码设置:
image.png这样设置完之后:
image.png字数和类型的优先级别比作者名更高 因此字数和后面的类型可以完整的显示,而作者名就根据之前设置的约束压缩显示了.