2016-05-16 71 views
0

我有兩個UIView包含在UIView中。這些子視圖具有垂直邊界約束。他們的身高是不變的。故事板:更改相對於視圖高度的間距

我想我的利潤完全消失,如果兩個高度限制等於0

如果我的身高之一等於0,我想只保留第二子視圖的垂直間距。

我該怎麼做?

正常設置。垂直間距是好的和高度從0

高度是不同的是等於0。但我仍然有垂直間距的約束。我的容器視圖也應該有0的高度

回答

0

這裏最好的方法是以編程方式更改約束。爲每個約束創建一個IBOutlet,並將它們連接起來。從那裏,你可以設置一個觀察者(使用方法)來計算每個約束的高度,並且在一個或兩個高度等於0時相應地改變垂直間距約束(你可以通過覆蓋視圖中的observeValueForKeyPath:ofObject:change:context:方法控制器正在處理這些視圖)。

不要忘記在清理方法中刪除觀察者(如果在Swift中爲deinit,或者在ObjC中爲dealloc是你最好的選擇)。

+0

這是非常低效的,並且如果您在每次繪製視圖時進行計算,則可能會對名望率產生負面影響。 –

+0

同意,並且此解決方案不可擴展我認爲 – Pete

0

您可以給邊距一個等於它們的超視圖的高度約束,但是使乘數小於1.0。其他兩種觀點只是將所有方面都與他們的父母和邊緣視圖聯繫在一起。您可以在IB中完成所有工作,並且可以工作。

+0

嘗試了您的解決方案。如果我的超級觀點高度爲100,我應該給每個邊距約束設定一個恆定值100,然後給它們一個乘數(實際約束值:高度)? – Pete

+0

不,你需要給他們與他們的超級觀點相同的身高限制。 –