UILabel使用AutoLayout

时间:2016-02-23 19:09:49

标签: ios xcode autolayout

我想要一个带有按钮的UILabel,它的右侧居中,就像图片一样。

Placement example

我已经实施了一个"由水平中心对齐"对于UILabel和标签和按钮之间的标准空间,它通常工作得很好。 当UILabel的文本很长并且超出界限且按钮甚至不可见时,会出现问题。

我尝试将UILabel的行数设置为0,并设置questionLabel.preferredMaxLayoutWidth = CGRectGetWidth(self.questionLabel.frame)使标签垂直增长的原因。但它的宽度非常小(它是ui设计师的基本宽度)所以它看起来像一列文字。

所以问题是如何让UILabel:

  • 填充所有可用的水平空间而不隐藏按钮
  • 如果没有足够的水平空间将文本放入一条水平线
  • ,则垂直自动缩放
  • 水平居中

2 个答案:

答案 0 :(得分:1)

它错过了从trailing UIImageView到容器视图或边距尾随的约束。我使用Greater Than or Equal约束,因此如果标签的长度很短,图像将保持靠近标签 - 使用从标签到图像的horizontal space约束。

这样,您的标签(相对于您的视图居中)将居中,并且会使用可能使用的所有水平空间尊重trailing UIImageView对视图的约束如下:

enter image description here

在下图中,根据约束条件,可以看到标签达到最大宽度:

enter image description here

答案 1 :(得分:0)

你可以删除宽度约束,并从标签的右侧向图像添加一个水平空间约束,从标签的左侧到视图的左边界添加一个水平空间约束(将常量设置为minY值你的形象让它居中)

Example implementation