Ios 如何在视图中垂直居中放置标签

Ios 如何在视图中垂直居中放置标签,ios,swift,position,uilabel,Ios,Swift,Position,Uilabel,我在视图中有4个这样的标签: 视图层次结构如下所示: 但如果每个标签中的一个文本为空,则所有其他标签应与图像垂直居中 例如:albumDataLabel.text为空,则userNameLabel,albumNameLabel,albumLocationLabel应与图像垂直居中 像这样的事情: 因此,如何做到这一点,请为我指出一些方法。 为每个标签以及没有文本的标签设置高度约束 在运行时使其高度为零(通过将常量设置为0,从高度约束的出口开始) 您的约束应该是线性层次结构,就像第一个标签的

我在视图中有4个这样的标签:

视图层次结构如下所示:

但如果每个标签中的一个文本为空,则所有其他标签应与图像垂直居中

例如:
albumDataLabel.text
为空,则
userNameLabel
albumNameLabel
albumLocationLabel
应与图像垂直居中

像这样的事情:

因此,如何做到这一点,请为我指出一些方法。

  • 为每个标签以及没有文本的标签设置高度约束 在运行时使其高度为零(通过将常量设置为0,从高度约束的出口开始)
  • 您的约束应该是线性层次结构,就像第一个标签的顶部应该与超级视图的顶部固定一样,最后一个标签的底部应该与超级视图的底部固定一样,并且每个标签的底部都应该与下面标签的顶部固定一样
  • 然后,您应该为包含具有最小高度(视图的最小高度)的常量
    (>=)
    的所有标签的
    视图设置高度约束
  • 并将该视图与图像视图垂直居中
你可以做这种设置

  • 为每个标签以及没有文本的标签设置高度约束 在运行时使其高度为零(通过将常量设置为0,从高度约束的出口开始)
  • 您的约束应该是线性层次结构,就像第一个标签的顶部应该与超级视图的顶部固定一样,最后一个标签的底部应该与超级视图的底部固定一样,并且每个标签的底部都应该与下面标签的顶部固定一样
  • 然后,您应该为包含具有最小高度(视图的最小高度)的常量
    (>=)
    的所有标签的
    视图设置高度约束
  • 并将该视图与图像视图垂直居中
你可以做这种设置

1)对于您的用户名标签:

2) 对于您的albumNameLabel:

3) 记住这一点:

self.addSubview(userNameLabel)
self.addSubview(albumNameLabel)
并以这种方式继续查看视图中的所有元素。

1)对于您的用户名标签:

2) 对于您的albumNameLabel:

3) 记住这一点:

self.addSubview(userNameLabel)
self.addSubview(albumNameLabel)

并以这种方式继续查看视图中的所有元素。

由于视图中已经有4个标签,因此可以设置标签的约束,将第一个标签固定到顶部,最后一个标签固定到底部,并将两者之间的间距设置为零

然后选择视图(带标签)和图像视图以对齐其垂直中心

不要为标签或视图设置高度值约束


当其中一个标签有空字符串时,高度将自动设置为零,因此“隐藏”,因此视图(带标签)的高度将缩小。所有这些都可以在界面生成器中完成,无需编码,这只是一个自动布局的问题。

由于您的4个标签已经在一个视图中,您可以设置标签的约束,将第一个标签固定到顶部,最后一个标签固定到底部,并将两者之间的间距设置为零

然后选择视图(带标签)和图像视图以对齐其垂直中心

不要为标签或视图设置高度值约束



当其中一个标签有空字符串时,高度将自动设置为零,因此“隐藏”,因此视图(带标签)的高度将缩小。所有这些都可以在界面生成器中完成,无需编码,这只是一个自动布局的问题。

尝试使用stackview…我的应用程序用于iOS7,您能为我提供另一种方法吗。包含标签的视图是否有高度限制???没有标签的高度限制,只有垂直间距,前导空格和尾随空格。尝试使用stackview…我的应用程序用于iOS7,您能为我提供另一种方法吗。包含标签的视图是否有高度限制???不,标签没有高度限制,只有垂直间距,前导空格和尾随空格。所以我不需要像上面的答案那样为每个标签设置高度限制,对吗?就我对你的问题的测试结果而言,不需要高度限制是的,不需要。我试过了,效果很好。谢谢。所以我不需要像上面的答案那样为每个标签设置高度限制,对吗?就我对你问题的测试结果而言,不需要高度限制是的,不需要。我试过了,效果很好。谢谢。我想我不需要为每个标签设置高度限制。它也适用于我。是的,你可以做它没有高度限制,然后整个设置将有点不同。我建议一种可能性,它可以通过多种方式实现。非常感谢@Ketan Parmar。我想我不需要为每个标签设置高度限制。它也适用于我。是的,你可以做它没有高度限制,然后整个设置将有点不同。我建议一种可能性,它可以通过多种方式实现。非常感谢Ketan Parmar。
self.addSubview(userNameLabel)
self.addSubview(albumNameLabel)