2014-07-16 88 views
3

我有以下設計。 enter image description hereUITableView自動佈局靈活高度

正在使用AutoLayout使每件事情都變得靈活。在這個設計中,我有一個UIView,它是在圖像中顯示的灰色的灰色和在UIView以下的UITableView。有時我必須顯示這UIView有時我必須隱藏這灰色UIView

我的問題是當我隱瞞UIView,UITableView沒有固定它的高度。我不想在.m文件中硬編碼。有沒有可能AutoLayout處理這個問題。我有這些約束如下圖。我是否缺少任何限制。

enter image description here

當我嘗試改變UIView高度,UITableView的不向上移動,並示出了一些橙色約束作爲顯示在圖像內。 enter image description here

+0

你在運行時檢查過嗎?在界面構建器中,如果您更改了常量的約束條件,則會顯示一條橙黃線,以通知相對視圖的佈局將在運行時更改。只需要在界面生成器中刪除黃線,選擇編輯器 - >解決自動佈局問題 - >更新幀。 – soulpark

回答

1

該限制看起來不錯。您只需顯示/隱藏灰色UIView即可更改高度限制常數。 爲此,請在控制器中爲約束創建一個IBOutlet(您的操作方式與您對UIViewIBOutlet的操作方法相同),並且當您要隱藏灰色視圖時,請將約束的constant屬性設置爲0

例如。

@interface MyViewController 
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *greyViewHeightConstraint; 
@end 

,當你想隱藏的觀點:

self.greyViewHeightConstraint.constant = 0; 

要再次顯示視圖,你將在故事板被加載(如在viewDidLoad爲以後有救了「默認」的恆定值例如),並將self.greyViewHeightConstraint.constant設置爲此保存的值。

還要注意這些約束條件的變化can be animated


您在Interface Builder中看到的「橙色約束」是正常的:它表明視圖框架與您設置的約束不匹配。然後,您可以更新框架以遵守約束,或更新約束以匹配框架。

+0

好的。讓我試試你的解決方案。 – user2706827

+0

您的解決方案按照我的需求工作。 – user2706827