zoukankan      html  css  js  c++  java
  • AutoLayout学习之理解intrinsicContentSize,Content Hugging Priority,Content Compression Resistance Priority

    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这个属性现在翻译成内容抗拉伸优先级也可以。

  • 相关阅读:
    for else 使用方法
    random 模块常用方法总结
    CPU使用率高,top等命令查找不到使用CPU高的进程怎么办
    查看CPU核数方法
    PyCharm安装第三方库如Requests
    python-login
    Edit Distance
    redhat nginx随机启动脚本
    vue-cli脚手架build目录中的webpack.base.conf.js配置文件
    vue-cli脚手架build目录下utils.js工具配置文件详解
  • 原文地址:https://www.cnblogs.com/Rinpe/p/4983983.html
Copyright © 2011-2022 走看看