动态删除元素时如何使用Autolayout?

时间:2016-08-27 23:41:27

标签: ios objective-c autolayout

我有2个按钮彼此相邻,并在屏幕上均匀分布。在他们被设置为均匀大小的那一刻。现在其中一个按钮需要动态删除,所以我想在删除第一个按钮后一直跨越第二个按钮。问题是我不确定我是否可以在故​​事板中使用Autolayout来做到这一点。按钮当前外观的基本示例。

  

20px - BUTTON 1 - 10px - BUTTON 2 - 20px

  

20px - BUTTON2 - 20px

3 个答案:

答案 0 :(得分:1)

first your view look like this. 20px - BUTTON 1 - 10px - BUTTON 2 - 20px 在底部按钮下方:

[self.buttonOneOutlet removeFromSuperview];

self.buttonTwoOutlet.translatesAutoresizingMaskIntoConstraints = NO;

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.buttonTwoOutlet attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0 constant:20.0]];

之后看起来像

答案 1 :(得分:0)

您可以在BUTTON 2中添加另一个约束,其优先级低于约束,但在故事板中添加到BUTTON 1。

Something like that

答案 2 :(得分:0)

一种方法是将两个按钮分组到水平堆栈视图中。如果将堆栈视图的间距设置为10,则它将保持按钮之间的间距。约束堆栈视图的前沿和后沿以获得任意一侧的20点偏移。

关于堆栈视图的有用之处在于,如果将按钮1的hidden属性设置为YES,它将消失,堆栈视图将负责更新约束。它会将自己的内容大小更新为足以仅按住按钮2,并且10点间距不会产生任何影响。但是,如果您将按钮1的hidden属性设置为NO,它将返回原始状态。