將想要隱藏的標籤放入視圖中,一旦所有東西都具有正確的佈局約束,向容器視圖添加高度約束並將約束連接到IBOutlet
屬性。
確保您的屬性strong
代碼
喲只需要恆定的設置爲0,並激活它,壽隱藏的內容,或取消其展示的內容。 這比用不斷的價值修復它更好。 之後別忘了打電話layoutIfNeeded
。
@property (strong, nonatomic) IBOutlet UIView *myContainer;
@property (strong, nonatomic) IBOutlet NSLayoutConstraint *myContainerHeight; //should be strong!!
-(void) showContainer
{
self.myContainerHeight.active = NO;
self.myContainer.hidden = NO;
[self.view layoutIfNeeded];
}
-(void) hideContainer
{
self.myContainerHeight.active = YES;
self.myContainerHeight.constant = 0.0f;
self.myContainer.hidden = YES;
[self.view layoutIfNeeded];
}
一旦你有你的設置,你可以通過你的約束背部設置爲0,然後到原始值測試它在IntefaceBuilder。不要忘記檢查其他約束優先級,以便在隱藏時根本不存在衝突。其他測試方法是將其設置爲0並將優先級設置爲0,但是,您不應該忘記將其恢復到最高優先級。
你是什麼意思「添加一個新的約束,使標題標籤有一個垂直的差距」。應該是什麼樣的約束?我已經通過垂直空間約束來標記帶有標題標籤的較低標籤。 – Centurion
如果我刪除「頂部空間到容器」的約束,然後IB顯示錯誤與「需要約束的Y位置」 – Centurion
是啊,首先你需要給它新的約束,然後添加 - 現在superflous - 舊的。 IB不允許歧義 –