如何相对于图像垂直居中一组标签?

时间:2018-02-24 19:52:07

标签: ios autolayout

这就是我想要实现的目标:

我希望图像在单元格中垂直居中,并且两个标签(放置在另一个视图中)相对于图像垂直居中(作为一组 - 这就是它们在视图中的原因)。 / p>

以下是我的尝试:

第二个标签的内容拥抱值较低。正如您所看到的,当存在小文本时,由于内容拥抱,第二个标签中的文本不会直接放在第一个标签下面,因此具有大量空白空间。此外,第一个标签应放在较低的位置。

当有足够的文字时,它看起来不错。

当文字较小时,我该如何处理案件?

感谢。

3 个答案:

答案 0 :(得分:1)

尝试从堆栈视图设置标签和图像组。

答案 1 :(得分:1)

我使用其他建议来使用堆栈视图以及此处接受的答案,以使标签的对齐起作用:How to center both vertical and horizontal inside a UIStackView。我不会触及内容拥抱优先级。

首先,我设置一个水平堆栈视图,用作容器。我将它固定到单元格的顶部,底部,前导尾随两端。它的大小将是细胞的大小。其对齐中心。这意味着它将使其组件垂直居中。 分布填充 - 组件将占据整个空间水平

Content Stack View plus other constraints

我将图片视图和垂直堆栈视图作为其组件。我设置了固定高度和宽度的图像视图。我猜这就是想要的东西。我把这两个标签作为第二个堆栈视图的组件。 垂直堆栈视图具有对齐填充。它会填充所有空间水平分发也是填充。它将填充所有空间垂直,但这个空间是固有的,并且根据我的理解由标签设置。所以它会随着内容的增长而缩小。

Vertical Stack View plus other constraints

如果我正确理解了要求,就是这样。

还有一件事。因为我看到您发布的最后一张图片中的文字在某个时刻被剪切 - 如果这是您想要的,请在第二个标签处设置一个高度约束,即小于或等于您选择的某个数字,因此标签无法生长超越它。

答案 2 :(得分:0)

UIStackView可以让你做到这一点。

在几行文字的情况下,您有两种选择。 首先,将UILabel包装在另一个UIStackView中,并将轴设置为“水平”,将“对齐”设置为“顶部”。

如果没有做,请检查this线程垂直对齐标签。