主要问题:我在另一个下面有三个标签(label1,label2,label3)。
如果在运行时将label2设置为隐藏或从 super 视图中删除,如何将label3对准label1以下。

初始视图:

Label1
vertical spacing
Label2
vertical spacing
Label3

行动:
set Label2.hidden = yes;

输出:

Label1
vertical spacing
Label3

我尝试过的是应用垂直间距约束:

label1和label2之间的
  • ,优先级为
  • label2和label3之间的
  • ,具有优先级为3rd的
  • 最低优先级的label1和label3之间的


  • 现在,当我删除label2时,应该如何刷新约束,或者应该在隐藏label2时跟踪所有约束并删除第二约束?

    最佳答案

    一种解决方案是更改label2的高度限制,使其为零,然后刷新限制,以使所有内容向上移动。您必须为该变量设置属性,并使用+(id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;进行设置

    几个提示:

  • 确保从以下位置删除,更改和重新添加约束
    标签,而不是标签的 super 视图。
  • 您可以使用所有相同的值
    对于新的现有约束,当然,
    常量的例外,它将为0。

  • 祝好运!

    10-01 16:00