具有动态大小的单元格的复杂自动布局
Posted
技术标签:
【中文标题】具有动态大小的单元格的复杂自动布局【英文标题】:Complex AutoLayout for Cell with dynamic size 【发布时间】:2015-05-15 21:16:36 【问题描述】:我有一个单元格,其中包含一个包含 10 个子视图的容器(其中两个只是边界,其他是标签)。该方案看起来像这样。
动态标签可能包含大量文本,因此单元格应符合适当的大小以适应内容。问题是如何手动设置所有约束......我自己尝试了十几次,但似乎我不擅长这个。表格视图支持行高的自动尺寸并使用自定义估计高度。
在 Storyboard 中看起来是这样的。
其中蓝色视图是视图 C 的子视图。后面的灰色视图是视图 B。粗体标签是静态的,其他的是动态的。
Demo project.
如何设置约束?
非常感谢您!
【问题讨论】:
【参考方案1】:我设法设置了您的约束,以便您获得所需的结果。这是我得到的:
我希望这是你想要的样子。
这是project 的链接。 我将尝试解释我是如何添加约束的,以使其更有意义。
首先,您有视图 B,它需要与contentView
一样大。为此,您将顶部/底部/左侧/右侧约束添加到 superView。因为您使用的是自动尺寸,所以如果您添加优先级为 1000(最大一个)的所有约束,运行时约束会出现一些错误。这是因为,在可以自动计算像元大小之前它为零,因此约束崩溃。因此,我将顶部和尾部空格的优先级设置为 999,这样您就不会再看到错误日志了。结果是一样的。
然后视图 C 需要(顶部或底部)/左/右和高度约束
然后您需要为标签添加约束。由于您需要正确的多行,因此约束需要为这种特殊情况指定垂直布局。因此,您有以下内容:第一个标签:顶部/左侧为名称标签,右侧为超级视图。所有其他的都从上到上,从下到下。
对于不需要调整大小的标签,您只需要前导空间到父级,水平空间到右侧标签和静态宽度。此外,您还需要一个约束来将顶部与右侧的标签对齐。
这是我得到的结果:
希望我的解释有道理,如果您有任何问题,请告诉我。祝你的项目好运!
【讨论】:
非常感谢!但是我该如何处理内容拥抱优先级?如果第一个 UILabel 有一个巨大的文本,但所有其他的都没有,那么第一个标签不会完全显示文本。文本被自动换行... 谢谢,我解决了! ***.com/questions/30276663/…以上是关于具有动态大小的单元格的复杂自动布局的主要内容,如果未能解决你的问题,请参考以下文章