代码之家  ›  专栏  ›  技术社区  ›  Ranjith kumar

如何使视图高度根据其子视图内容而增长

  •  7
  • Ranjith kumar  · 技术社区  · 9 年前

    2 回复  |  直到 9 年前
        1
  •  12
  •   John Wickham    9 年前

    您可以使用自动布局来实现这一点。

    确保每个子视图都有定义其大小和位置的约束。然后,将父视图的垂直内容拥抱和压缩阻力优先级设置为“必需”。这将根据其子视图的高度和位置定义父视图的高度。

    numberOfLines 设置为 0 可以根据其内容自动增长,因此您希望它垂直拥抱其内容并抵抗垂直压缩,以便调整父视图的大小。

    此图显示了父视图(白色),其垂直拥抱和抗压优先级设置在inspector面板中。请注意,父视图为其宽度、x位置和y位置设置了约束,但没有为其高度设置约束。它能够根据子视图的高度和位置推断其高度(请参见下图)。

    enter image description here

    此图显示了每个子视图的约束。请注意,这些视图的垂直拥抱和抗压优先级为 不 改变。这些视图中的每一个都有x位置和y位置的约束,但您会注意到,并非所有视图都有宽度和高度的约束。标签和开关等视图能够根据其内容自动推断其大小约束。如果不在每个子视图上设置垂直位置约束,AutoLayout将不知道每个子视图需要多少空间,因此它也不知道父视图应该有多高。

    enter image description here

        2
  •  1
  •   alegelos    9 年前

    2-将项目/事物添加到视图容器并添加约束。确保添加所有必需约束,并将底部间距添加到内部的底部项目。

    这将定义容器视图的高度。

    enter image description here

    enter image description here

    PD:忘记 Content Hugging/Compression and Priority . 它们很方便,但在这里没有用。他们只是设置了一个阻力,使其变大或变小。