Content Compression Resistance和Content Hugging

一 基础知识

1.Intrinsic Content Size:
就是像button,label等文本的size。其中橙色虚线既是label默认的Content Size。(会根据label的text内容的不同,而不同)
这里写图片描述
2.Content Hugging:抗拉伸 Content Compression Resistance: 抗压缩
下图为 xib中 默认的数值。
这里写图片描述

注意:仅当视图定义了自己的Intrinsic Content Size,那么它的Content Compression Resistance优先级和Content Hugging优先级属性才有作用。

二 总规则:

Horizontal方向(水平方向):

  1. 宽度< Content Size ,并且宽度约束优先级< Content Compression Resistance

    • 抗压缩起作用,宽度= Content Size,用户想要设置的宽度无效。
      • 例子:
        对于Content Compression Resistance默认的优先级下(750),需要把控件的宽度约束优先级设置UILayoutPriorityRequired(1000),宽度才会满足用户的设置要求,否则宽度则为Content Size。
  2. 宽度> Content Size,并且宽度约束优先级< Content Hugging优先级

    • 抗拉伸起作用,宽度 = Content Size,用户想要设置的宽度无效。
      • 例子:
        • 对于Content Hugging默认的优先级下(251),需要把控件的宽度约束优先级设置UILayoutPriorityDefaultHigh(750),宽度才会满足用户的设置要求,否则宽度则为Content Size。

Vertical方向(垂直方向):
同水平方向。只不过比的是高度。

三 详细说明

一.宽度小于intrinsic Content Size的默认大小,Content Compression Resistance起作用
(1) 宽度约束为750时,Content Compression Resistance Priority的Horizontal 大于750时,橙色方框为实际展现的效果。宽度为intrinsic Content Size的默认大小。控件label不会被压缩。

这里写图片描述
其中宽度约束的约束优先级为750,Content Compression Resistance Priority的Horizontal的优先级为751.

(2)宽度约束为750时,Content Compression Resistance Priority的Horizontal <750时,橙色方框为实际展现的效果。宽度为宽度约束大小。控件label会被压缩
这里写图片描述

其中宽度约束的约束优先级为750,Content Compression Resistance Priority的Horizontal的优先级为749

二 宽度大于intrinsic Content Size的默认大小,Content Hugging起作用
(1)宽度约束为251时,Content Hugging的Horizontal 大于251时,橙色方框为实际展现的效果。实际宽度为intrinsic Content Size的默认大小。控件label不会被拉伸。
这里写图片描述
其中宽度约束的约束优先级为251,Content Compression Resistance Priority的Horizontal的优先级为252.
(2)宽度约束为251时,Content Compression Resistance Priority的Horizontal 小于251时,橙色方框为实际展现的效果。宽度为宽度约束大小。控件label会被拉伸
这里写图片描述
其中宽度约束的约束优先级为251,Content Compression Resistance Priority的Horizontal的优先级为250.
参考:
http://codingobjc.com/blog/2015/01/28/autolayoutzhong-de-content-compression-resistancehe-content-huggingdao-di-shi-shi-yao-yi-si/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值