我有两个标签并排“Label 1”和“Label 2”。如果“标签1”内容不可用,则“标签2”替换“标签1”位置。有人知道如何使用自动布局?
为了尝试目的,我已经确定了两个标签的高度和重量。 “标签1”具有前导和前8个像素边距,而“标签2”具有0个像素用于前导和8个像素用于顶部。将“标签1”大小设置为“0”,隐藏“标签1”但不起作用。
答案 0 :(得分:1)
如果两个标签都有固定宽度,请为两个标签设置恒定宽度。设置Lable2领先空间是' 0' 0关于label1。向Label1宽度添加NSLayoutConstraint
。现在以编程方式发现Lable1内容为空白时,将其宽度布局约束设置为' 0'。 Lable2将自动向左移动并位于Label1的位置。
答案 1 :(得分:1)
删除两个标签的宽度约束,并根据您的要求(从尺寸检查器)更新(设置)标签的压缩/拥抱优先级。
通过删除宽度约束,您的问题将得到解决,但是autoLayout可能会显示内容显示优先级的冲突,因为您的两个标签位于水平位于同一行(点)。要解决此冲突,您需要更新两个标签中任何一个的压缩/拥抱优先级。
现在,当任何一个(或两个)标签文本都没有值时,为它设置nil值,因此其框架(空格)将自动被其他标签占用。如果两个标签文本都是零值,则两者都将消失(自动将其宽度设置为零)。
答案 2 :(得分:0)
您需要创建Label2的IBOutlet
宽度约束,并且需要检查Label1的内容。如果您发现它为空,则需要将其设置为零并调用layoutIfNeeded
以重置视图框。
答案 3 :(得分:0)