2012-05-03 57 views
1

當我想擁有一個自定義單元格時,我通常會將一個UIView子類添加到單元格的內容視圖。對於我的子視圖的佈局,我使用了一個筆尖。然後我把筆尖連接到我的UIView子類。我的問題是如何動態調整內容大小。說我的觀點裏面有很多UILabels。我使用layoutSubviews來定位所有的子視圖 - 但只有這樣,我才真正知道我的細胞的高度。所以目前在tableView:heightForRowAtIndexPath我設置我的子視圖,並呼籲layoutIfNeeded所以一切都定位正確。現在我知道我的細胞的高度,並將其返回到tableView:heightForRowAtIndexPath方法中。但現在當tableView:cellForRowAtIndexPath被稱爲我給的單元格的高度爲44.0。當我將我的子視圖添加到它時 - 我的子視圖超出了其父界限。然後,當細胞後來在iOS中調整到我說我需要的高度時,我的內容因爲我的autoresizingMask而被拋棄。試圖弄清楚這是否是其他人處理的問題,或者我是否完全錯誤。看起來倒退,我們要求高度,然後創建一個不是那個高度的單元格。UITableViewCell - 如何處理來自Nib的動態大小的內容視圖

回答

2

不幸的是,這就是UITableViews的工作原理:你需要在UITableViewCells被渲染之前提供高度。 是的,每個人都必須處理它。 :)

您可以創建一個NSArray,添加所有自contentViews,設置其根據預期的內容查看邊界,然後使用該數組作爲數據源tableView:heightForRowAtIndexPath:tableView:cellForRowAtIndexPath:frame。雖然這不是非常高效,但對於小數據集卻可以正常工作。

而且,這裏是一個不錯的教程,這個話題: UITableViewCell Dynamic Height (by Matt Long)

類似的問題對SO: How can I do variable height table cells on the iPhone properly?

相關問題