2017-04-16 61 views
0

我有一個帶有三個控件的水平堆棧。如何使控件佔用堆棧內的實際大小

前兩個(下圖中的綠色和橙色)均基於IB_DESIGNABLEUIView類。這些類中沒有width約束,相對於這些控件必須的寬度。第三種觀點是常規的UIView

enter image description here

這些控制具有多個按鈕。這些按鈕表示配置的值。它們是單選按鈕,用於讓用戶選擇多個之間的特定配置。由於這些按鈕被多次使用,特定的配置可能只有4個選項可供選擇,所以我必須隱藏3個按鈕,而在其他情況下則需要隱藏2個按鈕。

這些IB_DESIGNABLE類是基於XIB s。按鈕位於這些XIB s內的水平堆棧內。

這是問題所在。假設我必須隱藏綠色按鈕上的2個按鈕。由於兩者都位於水平堆棧內,並且它們的按鈕也位於水平堆棧內,所以當我隱藏每個按鈕的一個或多個按鈕時,我希望控件減小其寬度。

在這種情況下,通過隱藏在一個綠色的2個按鈕,我想整個事情要呈現像

enter image description here

但事實並非如此。它呈現像

enter image description here

注意:當控制合同我需要的第三種觀點佔據的剩餘空間。我使用該視圖來強制控件左側,因爲我無法僅僅使用堆棧來實現這一點,它總是試圖擴展整個事情。

這3個視圖都沒有限制。

XIB內部按鈕具有寬度的水平約束,但他們正在使用的750優先級,而不是1000

保持所述控制是水平的,填充,填充堆棧,間隔20 的堆棧持有xib中的按鈕是水平的,填充,填充,間距爲0.

任何想法?

回答

1

如何隱藏按鈕?通過isHidden = true?那就是原因。 Autolayout忽略隱藏狀態。按鈕仍然在那裏。您也必須停用/更改按鈕的約束。例如將按鈕的寬度約束設置爲0.

+0

BRILLIANT!謝謝!!!!!!! – SpaceDog