如何在视图中垂直居中标签

时间:2016-09-01 06:50:03

标签: ios swift position uilabel

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

enter image description here

视图层次结构如下:

enter image description here

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

例如:albumDataLabel.text为空,然后userNameLabelalbumNameLabelalbumLocationLabel应与图片垂直居中。

这样的事情:

enter image description here

那么如何做到这一点,请指出一些方法。

3 个答案:

答案 0 :(得分:3)

  • 为每个标签设置高度约束,以及哪个标签没有文本 在运行时使其高度为零(从高度约束的出口通过将常数设置为0)。
  • 您的约束应该是线性层次结构,例如第一个标签的顶部应该固定它的晚餐视图的顶部和最后一个标签的底部应该固定超级视图'底部和每个标签的底部应固定在标签下方的顶部。
  • 然后你应该为view设置包含所有标签的高度限制,这些标签的最小高度(>=)不变(视图的最小高度)。
  • 并使用您的图片视图垂直居中于该视图。

你可以做这种设置!!

答案 1 :(得分:1)

由于您的4个标签已经在视图中,因此您可以设置标签'限制将第一个标签固定到顶部,最后标记底部,间距介于零

然后选择视图(withLabels)和ImageView以对齐它们的垂直中心

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

当您的某个标签中有一个空字符串时,高度会自动设置为零,因此会隐藏'所以视图(withLabels)的高度会缩小。所有这些都可以在界面构建器中完成,无需编码,只需自动布局。

答案 2 :(得分:0)

1)您的 userNameLabel

userNameLabel.leftAnchor.constraintEqualToAnchor(imageView.rightAnchor, constant: 10).active = true
                userNameLabel.topAnchor.constraintEqualToAnchor(self.topAnchor, constant: 50).active = true
                userNameLabel.widthAnchor.constraintEqualToConstant(220).active = true
                userNameLabel.heightAnchor.constraintEqualToConstant(30).active = true

2)为您的 albumNameLabel

albumNameLabel.widthAnchor.constraintEqualToConstant(220).active = true
                albumNameLabel.heightAnchor.constraintEqualToConstant(30).active = true
                albumNameLabel.topAnchor.constraintEqualToAnchor(userNameLabel.bottomAnchor, constant: 5).active = true
                albumNameLabel.leftAnchor.constraintEqualToAnchor(imageView.leftAnchor, constant: 10).active = true

3)记住这一点:

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

以这种方式继续浏览视图中的所有元素。