iOS - Swift: 在TableView行中使用多行标签

5
我正在尝试在tableview单元格中插入一些多行标签,但它看起来像下面的图片。我希望文本在换行处自动换行,并在需要时占用更多行,必要时增加单元格的高度。
在图像中,我希望每个标签都有扩展到多行的可能性。
标签嵌入在垂直堆栈视图中,而垂直堆栈视图则嵌入在另一个堆栈视图中。
我尝试了许多可能性,包括将每个标签嵌入视图中,将标签行数设置为0以及其他我在SO答案中找到的内容,但是标签没有正确换行,它们总是只占用一行。

enter image description here

编辑:

我添加了一点解释:

1) 我认为问题在于stackview自动设置子视图的高度。

2) 是的,我可以使用动态高度单元格,但这不是重点,因为对我来说,单元格都是相同高度就足够了,当文本不占用两行时,单元格下面会有更多空白空间。所以我的问题只是将标签的文本包装在stackview中。


所以,您想让单元格的高度是动态的,对吗? - Ahmad F
@AhmadF 我已经添加了一个问题的解释。 - Lorenzo Barbagli
1个回答

9
看起来您需要的是动态单元格高度,有些事情需要完成才能实现它:
1) 将标签行设置为0
2) 在viewDidLoad中设置tableview的estimatedRowHeight
3) 要么在设置了estimatedRowHeight后将rowHeight设置为UITableViewAutomaticDimension,要么在heightForRow中返回UITableViewAutomaticDimension 4) 确保您没有在要动态更改高度的标签上设置高度约束
编辑后的问题:
由于标签在堆栈视图中,因此确保堆栈视图没有任何高度约束,并且在标签展开时会自动调整高度。

我尝试了你提到的所有方法,如果我设置UITableViewAutomaticDimension和estimatedRowHeight,内容甚至没有显示,单元格也会折叠。 - Lorenzo Barbagli
如果单元格被折叠了,那么你很可能没有在故事板中正确设置约束条件。确保你拥有所有必需的约束条件,并且单元格内容视图的顶部与顶部标签之间以及底部与底部标签之间存在明确的连接。否则,自动大小将为0。 - CSjunkie
这是其他用户发布的链接,其中包含对此处有用但不是其他用户指出的信息:https://www.raywenderlich.com/129059/self-sizing-table-view-cells - CSjunkie
2
运行得非常顺利! - Justin
难道你不觉得这是约束模糊的情况吗?如果不是,请尝试更改单元格大小,然后您将看到约束的红色错误。因为所有单元格都具有固有高度,所以您需要给出优先级。 - Amber K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接