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

问题描述 投票:0回答:4

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

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

ios autolayout storyboard uilabel
4个回答
1
投票

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

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

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

enter image description here


1
投票

如果两个标签都具有固定宽度,请为两个标签设置恒定宽度。设置Lable2前导空格相对于label1为'0'。将NSLayoutConstraint添加到Label1宽度。现在以编程方式发现Lable1内容为空时,将其宽度布局约束设置为“0”。 Lable2将自动向左移动并位于Label1的位置。


0
投票

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


0
投票

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

enter image description here

当我隐藏label1时

enter image description here

不需要约束:)

© www.soinside.com 2019 - 2024. All rights reserved.