自动布局:具有可变高度和两个标签的表格单元格
Posted
技术标签:
【中文标题】自动布局:具有可变高度和两个标签的表格单元格【英文标题】:Autolayout: table cell with variable height and two labels 【发布时间】:2015-05-17 16:23:30 【问题描述】:我遇到了一些高级自动布局主题,需要您的帮助。
我有一个简单的自定义表格单元格,标签固定在左侧,一个固定在右侧,非常简单:
现在,我希望左侧标签始终位于左上角,高一行,并根据内容缩放其宽度,最大为可用空间的 50%(如果内容多于此,我希望它被点切断):
我希望右侧标签始终位于右上角,向左增长直到到达左侧标签的右边框。根据左侧标签的宽度,右侧标签可能会变宽或变薄:
现在,如果内容不适合右标签,我希望它使用几行来改变单元格的大小,但仍然尊重左标签的大小:
我知道如何让标签自动增长表格单元格,但我不知道如何正确配置左右标签之间的关系。
谁能帮我解决这个问题?
非常感谢!
【问题讨论】:
【参考方案1】:您需要以下约束:
leftLabel
的宽度约束表明它应该小于或等于父视图的width / 2
。将此约束的优先级设为1000
(绝对必需)。
leftLabel
的尾随到 rightLabel
的前导之间的水平间距约束,其优先级低于上述优先级,但仍需要(例如,900
)。
使leftLabel
的横向内容拥抱优先1000
。
XIB中第一个约束怎么做:
基本上只是将leftLabel
上的Ctrl + left click
添加到superview,添加Equal Widths
约束,然后将约束修改为<=
而不是=
。还要修改Multiplier
;而不是1
,改为1:2
或2:1
,其中2 对应于superview 的宽度。
【讨论】:
谢谢!成功了!我只想补充一件事:我无法将“宽度相等”约束设置为标签及其子视图,在我的例子中是表格视图单元格的内容视图。因此,我只是简单地向我的 tableViewCell 添加了另一个 UIView,它在所有四个边框上都具有 0 的约束,并将其余部分添加到这个新视图中作为超级视图。 啊,是的——我忘了提,你需要添加额外的“包装”视图,因为你不能直接在单元格的contentView
上设置等宽约束。以上是关于自动布局:具有可变高度和两个标签的表格单元格的主要内容,如果未能解决你的问题,请参考以下文章