如何使用自动布局更改标签位置

时间:2017-03-21 12:48:33

标签: ios autolayout storyboard uilabel

我有两个标签并排“Label 1”和“Label 2”。如果“标签1”内容不可用,则“标签2”替换“标签1”位置。有人知道如何使用自动布局?enter image description here

为了尝试目的,我已经确定了两个标签的高度和重量。 “标签1”具有前导和前8个像素边距,而“标签2”具有0个像素用于前导和8个像素用于顶部。将“标签1”大小设置为“0”,隐藏“标签1”但不起作用。

4 个答案:

答案 0 :(得分:1)

如果两个标签都有固定宽度,请为两个标签设置恒定宽度。设置Lable2领先空间是' 0' 0关于label1。向Label1宽度添加NSLayoutConstraint。现在以编程方式发现Lable1内容为空白时,将其宽度布局约束设置为' 0'。 Lable2将自动向左移动并位于Label1的位置。

答案 1 :(得分:1)

删除两个标签的宽度约束,并根据您的要求(从尺寸检查器)更新(设置)标签的压缩/拥抱优先级。

通过删除宽度约束,您的问题将得到解决,但是autoLayout可能会显示内容显示优先级的冲突,因为您的两个标签位于水平位于同一行(点)。要解决此冲突,您需要更新两个标签中任何一个的压缩/拥抱优先级。

现在,当任何一个(或两个)标签文本都没有值时,为它设置nil值,因此其框架(空格)将自动被其他标签占用。如果两个标签文本都是零值,则两者都将消失(自动将其宽度设置为零)。

enter image description here

答案 2 :(得分:0)

您需要创建Label2的IBOutlet宽度约束,并且需要检查Label1的内容。如果您发现它为空,则需要将其设置为零并调用layoutIfNeeded以重置视图框。

答案 3 :(得分:0)

如果您不想使用压缩/拥抱属性。然后,您可以在stackview中嵌入标签,并在没有内容时隐藏标签。

enter image description here

当我隐藏label1

enter image description here

无需约束:)