簡體   English   中英

覆蓋iOS故事板約束

[英]Overriding iOS Storyboard Constraints

如何更改Storyboard中設置的約束?

我正在嘗試模仿Twitter iOS配置文件頁面,當您向下滾動時標題會縮小。

我有一個占用整個視圖的UIScrollView。 然后我在UIScrollView中有一個UITableView。 在故事板中,我必須為UITableView設置一個固定的高度。 因此具有等於高度= 350的約束。

然后我嘗試以編程方式更改它的高度:

 tableView.frame = CGRectMake(0, 0, scrollView.frame.width, scrollView.frame.height - 30)

當我這樣做時,它根本不會影響UITableView的大小。 我假設這是因為故事板的限制。

我錯過了什么或者我是否需要以編程方式開始?

不要與Storyboard中設置的約束作斗爭。 相反,您可以通過在“ 文檔大綱”視圖中找到@IBOutlet來創建高度約束,並控制 - 從約束到代碼的拖拽。 給它一個像tableHeightContraint這樣的名字。

@IBOutlet weak var tableHeightConstraint: NSLayoutConstraint!

然后,當您想要更改UITableView的高度時,修改約束的constant屬性:

tableHeightConstraint.constant = scrollView.frame.height - 30

正如@BlackRider在評論中指出的那樣,有時需要在更改約束后觸發布局。

呼叫:

view.layoutIfNeeded()

將告訴Auto Layout在需要時應用約束。 如果您要為更改設置動畫,則尤其如此。 在這種情況下, layoutIfNeeded()調用是在動畫塊內部進行的。

UIView.animateWithDuration(2) {
    self.view.layoutIfNeeded()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM