繁体   English   中英

iOS自动布局约束刷新

[英]iOS autolayout constraints refresh

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

初始视图:

Label1
vertical spacing 
Label2
vertical spacing 
Label3

行动:

set Label2.hidden = yes;

输出:

Label1
vertical spacing
Label3

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

  1. 在label1和label2之间,具有某些优先级
  2. 在具有第3个约束的高优先级的label2和label3之间
  3. 在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;

几个提示:

  • 确保从标签而不是标签的超级视图中删除,更改和重新添加约束。
  • 您可以将所有相同的值用于新约束的现有约束,当然,常数为0除外。

祝好运!

当将其设置为隐藏时,为什么不只将label3的框架更改为等于label2?

因此添加Label3.frame = Label2.frame; Label2.hidden = YES; 反之亦然。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM