如何让单元格中的内容视图占据整个单元格?

Posted

技术标签:

【中文标题】如何让单元格中的内容视图占据整个单元格?【英文标题】:How to have content view in cell take up entire cell? 【发布时间】:2019-03-29 04:48:35 【问题描述】:

我正在尝试创建一个水平堆栈视图并让它占据整个单元格宽度。我在这个水平堆栈视图中有两个垂直堆栈视图。我已将水平堆栈视图固定到超级视图的前缘和后缘,并将其垂直对齐到包含视图。当我在故事板链接中看到它时,它似乎看起来像预期的那样:

但是当我运行它时,它的右侧有这个间距 。

我试图通过将背景设置为栗色来查看是否可以查看单元格内容视图的宽度。对我来说,它似乎是单元格的整个宽度,所以我不确定我在这里做错了什么。

更新:调整堆栈视图的宽度后。我不太确定这是否完全是 stackView 问题。为 stackview 设置固定宽度可以解决我在一个屏幕上的问题,但这不适用于所有屏幕,因此尝试将其限制在边缘。我最终把单元格中的所有东西都去掉了,只留下了标题标签。 Stripped Down Cell

我把它放在父视图的中心,但它仍然忽略了它的约束。 Run Time View 我猜自动布局可以做到这一点。不太确定什么优先,并迫使它忽略我的限制。 我查看了调试视图层次结构,它在 UILabel 上有一个紫色标签,表示位置不明确。 Debug View Hierarchy 我猜自动布局然后会尽力修复它的位置。不确定这里有什么歧义。

更新 2:我不知道我设置的情节提要限制出了什么问题。我最终从控制器中删除了所有内容并从头开始。完成此操作后,它按预期工作。有时从头开始是最好的选择。

【问题讨论】:

【参考方案1】:

您需要定义水平堆栈视图子项(垂直堆栈视图)的宽度。您可以将两个垂直堆栈视图的宽度设置为相等,这样它们将占用相等的空间并填充父视图。

【讨论】:

我假设如果我将分布 = 填充设置为相等,那么拥有水平堆栈视图将为孩子们提供所需的约束。给它们相等的宽度似乎会更好。我看到的问题是当屏幕尺寸发生变化时,我也需要更改宽度。我希望将水平堆栈视图的分布属性设置为平均填充能够做到这一点。 Stackview 的高度和宽度取决于其子项。因此,也许您可​​以将 UILabel 的宽度设置为相等,这应该注意所有屏幕尺寸。查看上面的屏幕截图以获取类似的示例。 不幸的是,这不起作用。我可能发现这不是堆栈视图问题。我在一个标签上遇到了类似的问题。`

以上是关于如何让单元格中的内容视图占据整个单元格?的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 找出哪个表格视图单元占据了大部分屏幕

如何让excel单元格中的内容全部显示出来

如何将表格视图数组中的每个字符串分隔到自己的单元格中?

Cocoa:如何让表格视图在每个单元格中绘制自定义视图

表格视图单元格中的自增长标签

集合视图单元格中的集合视图适合内容