美文网首页约束相关iOS Developer
IOS AutoLayout Content Hugging 和

IOS AutoLayout Content Hugging 和

作者: 杰米 | 来源:发表于2016-03-12 18:40 被阅读143次

    今天在项目中需要画一个这样的cell

    cell的两个label约束如图,运行后钻石那个label不见了,因为在已有的约束的情况钻石label是永远在名字label的后面的

    后来想起了Content Hugging 和 Content Compression属性

    “Content Compression Resistance Priority”,叫内容压缩阻力优先级,优先级越高,则越晚轮到被压缩

    “Content Hugging Priority”,叫内容紧靠优先级,优先级越高,越晚轮到被拉伸。

    这里姓名应该是被压缩,而钻石要保持内容不被压缩

    所以有两点(实现任意一点都可以实现效果)

    1.钻石label应该比姓名label晚压缩,所以

    姓名label的 Content Compression Resistance Priority(优先级越高,则越晚轮到被压缩)优先级比钻石label的高

    2.姓名label应该比钻石label晚拉伸,所以

    姓名label的Content Hugging Priority(优先级越高,越晚轮到被拉伸)优先级应该比钻石label的高

    最后贴上两个约束的优先级图

    先是姓名label的

     

    然后是钻石label的

    完全符合上面说的亮点,最后效果图

    更新一下错误:

    今天逛博客的时候发现,我这个理解其实是错误的。

    NSLayoutConstraint有一个intrinsic size属性,返回的是根据label字符来算出来的准确尺寸。

    Content Hugging:内容压缩,阻止视图的实际尺寸比intrinsicContentSize返回的更大

    Content Compression Resistance:阻止内容压缩,阻止视图的实际尺寸比intrinsicContentSize返回的更小。

    Content Hugging Priority:内容压缩优先级,默认为250

    Content Compression Resistance Priority:阻止内容压缩优先级,默认为750。

    所以这两个Priority是相对于intrinsic size来说的

    比如上面的名字label的intrinsic size是比约束得到的宽度要大的,但是要保留宽度,因此label的NSlayout

    相关文章

      网友评论

        本文标题:IOS AutoLayout Content Hugging 和

        本文链接:https://www.haomeiwen.com/subject/xhankttx.html