2016-01-13 40 views
3

我有一個UITableView其中我在自動佈局中將高度定義爲200。基於此,我正在佈置其他元素,如UITextField等。之後,在運行時,我從服務器獲取數據並填充到UITableView,因此我根據其內容大小更新了UITableView的高度。下面的代碼我使用它更新UITableView高度變化時其他元素的約束

self.myTableView.frame = CGRectMake(0 , 0, self.myTableView.frame.width, self.myTableView.contentSize.height) 

但由於這一點,所有的下面放置UITableView的元素仍然出現在他們,而在自動佈局佈局是相同的位置。手段變化的高度UITableView對他們沒有任何影響。下圖描述了這個問題。有什麼可能的解決方案呢?

enter image description here

在這裏你可以看到,文本字段越來越在運行時間上重疊的tableview。我使用斯威夫特2在Xcode 7.2

+0

當表視圖的大小更改時,是否在更新接收數據後的約束? –

+0

是的,我收到並重新加載數據後更改'UITableView'的高度 – Abhi

回答

6

如果您對錶視圖和其他視圖都有所需的約束條件。

不要改變TableView的框架來改變它的高度。 相反,創建您的tablview的高度約束的IBOutlet。

例如說IBOutlet的名字是constraintTableViewHeight, 那麼你可以很容易地高。

constraintTableViewHeight.constant = yourNewHeightValue 
//update all constraint of your view and its inner view 
self.view.layoutIfNeeded(); 

推薦圖像爲您的身高約束創建IBOutlet。

enter image description here

+0

對不起,我有限的知識,但如何創建高度約束的IBOutlet? – Abhi

+0

您之前是否創建過按鈕或標籤的IBOutlet? –

+0

檢查編輯答案創建IBOutlet –

1

NSLayoutConstraint IBOutlet中進行的tableView高度和設置,如果你已經給出了實現代碼如下約束它不工作的數值未設置的tableview框架,以改變的tableview HIGHT不斷

一樣,如果你以tblHeight爲tableView高度,然後設置tblHeight.constant = self.myTableView.contentSize.height

0

你必須爲你的tableview高度約束創建出口連接。

@IBOutlet weak var heightContraint:NSLayoutConstraint!

,當你想改變表格視圖的高度,你可以改變約束值篩選

heightContraint.constant = newHeightValue self.view.layoutIfNeeded();

相關問題