当其他人隐藏一个按钮时的约束条件

问题描述:

我在视图控制器上有两个按钮。它们的高度和宽度相等,间隔很好,以屏幕为中心。 问题是,在某些情况下,其中一个按钮被隐藏。 当其中一个按钮被隐藏时,我想让另一个按钮居中。当其他人隐藏一个按钮时的约束条件

对于我的生活,我一直无法弄清楚如何配置约束来实现这一点。

我能够移动可见按钮,使其中心,如果其他按钮被隐藏,但似乎只能在视图加载后做到这一点,这使得按钮“跳跃”,看起来很愚蠢。

+1

您可能能够实现通过使用'UIStackView'这种效果。将这两个按钮添加到堆栈视图并居中堆栈视图。 – daltonclay*

都嵌入内的UIStackView按钮:

,并调整其设置以您的需求:

enter image description here


结果与button1的隐藏==假的(非打勾):

Button1 hidden == false (un-ticked)

结果与button1的隐藏==真(打勾):

Button1 hidden == true (ticked

+1

非常感谢。这不仅完全解决了我的问题,而且让我(最终)学会了UIStackView的WTH。 –

+0

只适用于iOS 9+。 – bagage

如果您能够将按钮放在正确的位置,请尝试使用动画来给它带来不错的效果。请注意,这只会激活约束条件的变化,所以如果您正在做其他事情来使按钮移动,它可能无法正常工作。

UIView.animate(withDuration: 0.5, animations: { 
     //do whatever you're doing to make the button 'jump' to the right position here 
     self.view.layoutIfNeeded() 
}) 
+0

使用这种方法,您需要以编程方式重置所有约束。否则,您设置的新位置将被layoutIfneeded覆盖,这会将对象移回到由其约束定义的位置。 说实话,这是更正确的做事方式。但有点难做。 –

这样的故事板约束并不意味着移动,并且由于没有正确执行此操作而导致很多UI问题。

我的建议?这并不理想,但只需添加第三个按钮即可。如果必须隐藏一个按钮,只需隐藏两个按钮,然后显示第三个按钮。