iOS开发 - Content hugging priority & Content compression resistance priority

1. 什么是Content hugging priority

你可以把它想象成一根放在视图上的橡皮筋。

这根橡皮筋会组织视图超过它本身的固有大小(intrinsic content size)。

它存在一个优先级,从0到1000。

1000表示视图绝对不能超过intrinsic content size。

我们来看个例子:

上图中有两个横向排列的标签控件(label),并且你也已经设置好了约束。

这个会工作正常,直到父视图变宽的时候。

那么,问题来了。

如果父视图变宽了,那个label应该变宽呢?

这个时候正是我们用到Content hugging priority的时候。

拥有高优先级Content hugging priority的视图控件将不会被拉伸。

你可以把这个优先级想象成橡皮筋的抗拉伸力。

这个优先级越大,视图将越希望保持自己的固有大小(intrinsic content size)。

2. Content compression resistance priority

和Content hugging priority相反,Content compression resistance priority是用来抵抗压缩的。

简单的来说,前者我们讨论过的,是抵抗拉伸,也就是抵抗变大,而后者是抵抗压缩,也就是抵抗变小。

还是上面的例子中,当父视图变小的时候,拥有高优先级的label将不会被压缩,因而标签上的文本也就不会被截断。

时间: 2024-10-11 13:46:18

iOS开发 - Content hugging priority & Content compression resistance priority的相关文章

iOS autolayout的Content Hugging 和 Content Compression Resistance

Content Hugging 和 Content Compression Resistance 这两个属性对有intrinsic content size的控件(例如button,label)非常重要.通俗的讲,具有intrinsic content size的控件自己知道(可以计算)自己的大小,例如一个label,当你设置text,font之后,其大小是可以计算到的.关于intrinsic content size官方的解释: Hugging priority 确定view有多大的优先级阻止

详解intrinsicContentSize 及 约束优先级/content Hugging/content Compression Resistance [转]

在了解intrinsicContentSize之前,我们需要先了解2个概念: AutoLayout在做什么 约束优先级是什么意思. 如果不了解这两个概念,看intinsic content size没有任何意义. 注:由于上面这几个概念都是针对UIView或其子类(UILabel,UIImageView等等)来说的.所以下文中都用UIView指代. AutoLayout在做什么 – 一个UIView想要显示在屏幕中,仅须有2个需要确定的元素,一是位置,二是大小.只要2者确定,UIView就可以正

详解intrinsicContentSize 及 约束优先级/content Hugging/content Compression Resistance

在了解intrinsicContentSize之前,我们需要先了解2个概念: AutoLayout在做什么 约束优先级是什么意思. 如果不了解这两个概念,看intinsic content size没有任何意义. 注:由于上面这几个概念都是针对UIView或其子类(UILabel,UIImageView等等)来说的.所以下文中都用UIView指代. AutoLayout在做什么 – 一个UIView想要显示在屏幕中,仅须有2个需要确定的元素,一是位置,二是大小.只要2者确定,UIView就可以正

转:AutoLayout中的Content Hugging 和 Content Compression Resistance

OS6中引入了AutoLayout,极大的方便了UI元素的布局,现在已经过去一年了,并且大部分设备的系统也已经升级到了iOS6,是时候要使用此项技术了. 在AutoLayout的学习中有两个概念官方文档讲述的不是很清楚,今天花费了2个小时的时间研究了一下,在此总结一下. Content Hugging 和 Content Compression Resistance 这两个属性对有intrinsic content size的控件(例如button,label)非常重要.通俗的讲,具有intri

iOS: 在代码中使用Autolayout (2) – intrinsicContentSize和Content Hugging Priority【转】

原文:http://www.mgenware.com/blog/?p=491 接上文:iOS: 在代码中使用Autolayout (1) – 按比例缩放和优先级. 我们继续来看在代码中使用Autolayout的话题.先说intrinsicContentSize,也就是控件的内置大小.比如UILabel,UIButton等控件,他们都有自己的内置大小.控件的内置大小往往是由控件本身的内容所决定的,比如一个UILabel的文字很长,那么该UILabel的内置大小自然会很长.控件的内置大小可以通过UI

iOS content Hugging Priority

1.Content Hugging Priority和Content Compression Resistance Priority Content Hugging:内容压缩,阻止视图的实际尺寸比intrinsicContentSize返回的更大 Content Compression Resistance:阻止内容压缩,阻止视图的实际尺寸比intrinsicContentSize返回的更小. Content Hugging Priority:内容压缩优先级,默认为250 Content Com

在代码中使用Autolayout (2) – intrinsicContentSize和Content Hugging Priority

接上文:iOS: 在代码中使用Autolayout (1) – 按比例缩放和优先级. 我们继续来看在代码中使用Autolayout的话题.先说intrinsicContentSize,也就是控件的内置大小.比如UILabel,UIButton等控件,他们都有自己的内置大小.控件的内置大小往往是由控件本身的内容所决定的,比如一个UILabel的文字很长,那么该UILabel的内置大小自然会很长.控件的内置大小可以通过UIView的intrinsicContentSize属性来获取内置大小,也可以通

iOS 开发实践之 Auto Layout

原:http://xuexuefeng.com/autolayout/?utm_source=tuicool 本文是博主 iOS 开发实践系列中的一篇,主要讲述 iOS 中 Auto Layout(自动布局)在实际项目中的使用. Auto Layout 在 2012 年的 iOS 6 中发布,距今已经 2 年多了,如果从 2011 年在 Mac OS X 上发布的 Auto Layout 开始算起,已经超过 3 年了.如果你的简历上写着 2 年以上工作经验,而竟然不会使用 Auto Layout

iOS 开发实践之Auto Layout(From Vincent Sit)

本文是博主 iOS 开发实践系列中的一篇,主要讲述 iOS 中 Auto Layout(自动布局)在实际项目中的使用. Auto Layout 在 2012 年的 iOS 6 中发布,距今已经 2 年多了,如果从 2011 年在 Mac OS X 上发布的 Auto Layout 开始算起,已经超过 3 年了.如果你的简历上写着 2 年以上工作经验,而竟然不会使用 Auto Layout,真有点不可思议. 本文将会通过若干个 Demo 进行讲解,通过实践来理解 Auto Layout 到底是什么