TableViewCell的高度计算应该是所有开发者都会使用到的东西,之前都是用代码计算的方法来计算这个高度。最近有时间看了几个计算Cell高度的方法。基本上都用到了AutoLayout,这篇首先介绍一下需要了解的三个AutoLayout属性。

一.名词解析

intrinsicContentSize:字面意思就是固有的大小。就是说在没有受到约束影响时本来应该有的大小。
Content Hugging Priority:字面意识是内容压缩优先级。就是说阻止view返回的实际尺寸比intrinsicContentSize大的优先级。
Content Compression Resistance Priority:字面意思就是内容抗压缩优先级。就是说阻止View返回的实际尺寸比intrinsicContentSize小的优先级。
看完名词解析之后肯定是很抽象,很难理解。下面通过具体的代码以及效果,理解一下应该就好接受了。
 

二.具体举例

1.先来看一下intrinsicContentSize

如图:
此时我在页面中添加了一个Button,并且Title为intrinsicContentSize,然后添加了一个距离顶部的约束以及一个距离左边的约束。并Log出Button的intrinsicContentSize属性。此时的content正好充满整个Button。运行效果如下图:

2.下面看一下Content Compression Resistance Priority

我们继续给Button添加一个距离右边的约束,要大一些,为150。如图:
运行效果如下图:
此时Button很明显被压缩了。因为左边距100+右边距150+Button的intrinsicContentSize.width已经超出了屏幕的宽度。这时候就要用约束的优先级来作限制了,显然我们要让Button的Content Compression Resistance Priority抗压缩优先级高于右边距的约束的优先级,这样就可以返回intrinsicContentSize。
此前所有的优先级都是默认的,下面来修改一下。Content Compression Resistance Priority的默认值是750(middle),而我们自己添加的约束的优先级要高于这个是1000(high)。如图:
 

下面我们把右边距约束的优先级改称749运行一下,效果如下图:

Button又回到了原来的大小,因为此时Content Compression Resistance Priority的750大于右边距的优先级749,所以他抗拒了右边距的压缩,保持了Button的大小。

3.下面看一下Content Hugging Priority

我们先把刚刚右边距的优先级恢复成原来的1000。然后将其Constant的值改的小一点为20,如图:

运行如下图:

Button被拉伸了,因为左边距100+右边距20+Button的intrinsicContentSize.width还没有达到屏幕的宽度,左边距和右边距的优先级又高于Button的Content Hugging Priority的优先级,Content Hugging Priority的默认值为250(low)。这次我们改下左边距的优先级使其小于Content Hugging Priority的优先级,改成249。如图:

此时Button恢复了原本的大小。我想Content Hugging Priority这个属性现在翻译成内容抗拉伸优先级也可以。

AutoLayout学习之理解intrinsicContentSize,Content Hugging Priority,Content Compression Resistance Priority的更多相关文章

  1. iOS开发之AutoLayout中的Content Hugging Priority和 Content Compression Resistance Priority解析

    本篇博客的内容也不算太复杂,算是AutoLayout的一些高级的用法.本篇博客我们主要通过一些示例来看一下AutoLayout中的Content Hugging Priority以及Content C ...

  2. 转:AutoLayout中的Content Hugging 和 Content Compression Resistance

    OS6中引入了AutoLayout,极大的方便了UI元素的布局,现在已经过去一年了,并且大部分设备的系统也已经升级到了iOS6,是时候要使用此项技术了. 在AutoLayout的学习中有两个概念官方文 ...

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

    1. 什么是Content hugging priority 你可以把它想象成一根放在视图上的橡皮筋. 这根橡皮筋会组织视图超过它本身的固有大小(intrinsic content size). 它存 ...

  4. 在代码中使用Autolayout – intrinsicContentSize和Content Hugging Priority

    我们继续来看在代码中使用Autolayout的话题.先说intrinsicContentSize,也就是控件的内置大小.比如UILabel,UIButton等控件,他们都有自己的内置大小.控件的内置大 ...

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

    原文:http://www.mgenware.com/blog/?p=491 接上文:iOS: 在代码中使用Autolayout (1) – 按比例缩放和优先级. 我们继续来看在代码中使用Autola ...

  6. intrinsicContentSize和Content Hugging Priority

    Mgen | 首页 | | 发新文章 | 联系 | 订阅  | 管理 iOS: 在代码中使用Autolayout (2) - intrinsicContentSize和Content Hugging ...

  7. 【log4j】的学习和理解 + 打印所有 SQL

    log4j 1.2 学习和理解 + 打印所有 SQL 一.基本资料 官方文档:http://logging.apache.org/log4j/1.2/manual.html(理解基本概念和其他) lo ...

  8. SQL Server 学习博客分享列表(应用式学习 + 深入理解)

    SQL Server 学习博客分享列表(应用式学习 + 深入理解) 转自:https://blog.csdn.net/tianjing0805/article/details/75047574 SQL ...

  9. JDK学习---深入理解java中的HashMap、HashSet底层实现

    本文参考资料: 1.<大话数据结构> 2.http://www.cnblogs.com/dassmeta/p/5338955.html 3.http://www.cnblogs.com/d ...

随机推荐

  1. 模拟I2C从机程序

    ;Slave.asm SCL BIT P1. SDA BIT P1. ;---------------------------- ORG RESET: SETB SCL SETB SDA CALL I ...

  2. PPI是什么?如何计算?

    PPI,英文全称:pixels per inch,即像素每英寸,也叫像素密度,它是描述在水平的和垂直的方向上,每英寸距离的图像包含的像素(pixel)数目.因此PPI数值越高,即代表显示屏能够以越高的 ...

  3. 几个国外FMX网站 good

    FireMonkey X –  Amazing overview of FireMonkey FMX Feeds – All your FireMonkey news in one place FMX ...

  4. Static Final用法

    一.final数据 在 java编程语言中,有时候需要告知编译器一段数据是不变的编译期常量.对于这种情况,编译器可以将此常量值带入需要用到它的计算式子当中,这种在编译时 执行计算式的方法减轻了运行时的 ...

  5. 设置Git提交时不用输入用户名和密码

    在用git提交时代码至github上时每次都要输入用户名和密码,当提交操作较为频繁时非常不方便,可以按下文中的介绍,设置成提交时不用输入用户名和密码: 1.在当前库下,已经运行过 git remote ...

  6. 【最大流】BAPC2014 A Avoiding the Apocalypse (Codeforces GYM 100526)

    题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...

  7. 高效算法——B 抄书 copying books,uva714

    Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Description ...

  8. json格式键盘编码对照表

    整理了一份JSON格式的键盘编码对照表.欢迎转载,但请注明出处,谢谢! { VK_BACK: 8, //退格键 VK_TAB: 9, //TAB键 VK_RETURN: 13, //回车键 VK_SH ...

  9. lightoj 1005 组合数学

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1005 #include <cstdio> #include <cst ...

  10. 浅谈数据库系统中的cache

    Cache和Buffer是两个不同的概念,简单的说,Cache是加速“读”,而buffer是缓冲“写”,前者解决读的问题,保存从磁盘上读出的数据,后者是解决写的问题,保存即将要写入到磁盘上的数据.在很 ...