2016-11-16 106 views
3

我在視圖控制器上有兩個按鈕。它們的高度和寬度相等,間隔很好,以屏幕爲中心。 問題是,在某些情況下,其中一個按鈕被隱藏。 當其中一個按鈕被隱藏時,我想讓另一個按鈕居中。當其他人隱藏一個按鈕時的約束條件

對於我的生活,我一直無法弄清楚如何配置約束來實現這一點。

我能夠移動可見按鈕,使其中心,如果其他按鈕被隱藏,但似乎只能在視圖加載後做到這一點,這使得按鈕「跳躍」,看起來很愚蠢。

+1

您可能能夠實現通過使用'UIStackView'這種效果。將這兩個按鈕添加到堆棧視圖並居中堆棧視圖。 – daltonclaybrook

回答

6

都嵌入內的UIStackView按鈕:

,並調整其設置以您的需求:

enter image description here


結果與button1的隱藏==假的(非打勾):

Button1 hidden == false (un-ticked)

結果與button1的隱藏==真(打勾):

Button1 hidden == true (ticked

+1

非常感謝。這不僅完全解決了我的問題,而且讓我(最終)學會了UIStackView的WTH。 –

+0

只適用於iOS 9+。 – bagage

0

如果您能夠將按鈕放在正確的位置,請嘗試使用動畫來給它帶來不錯的效果。請注意,這隻會激活約束條件的變化,所以如果您正在做其他事情來使按鈕移動,它可能無法正常工作。

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覆蓋,這會將對象移回到由其約束定義的位置。 說實話,這是更正確的做事方式。但有點難做。 –

0

這樣的故事板約束並不意味着移動,並且由於沒有正確執行此操作而導致很多UI問題。

我的建議?這並不理想,但只需添加第三個按鈕即可。如果必須隱藏一個按鈕,只需隱藏兩個按鈕,然後顯示第三個按鈕。

相關問題