2012-08-17 22 views
1

當我有從各種社會網絡中顯示更新的帖子一個UITableView正在重新佈局。我有自定義的UITableViewCell子類,裏面有一個自定義的UIView,它負責繪製所有的標籤和圖像,類似於蘋果在這裏描述的:http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7-SW18定製的iOS UITableViewCells不回收

在這個視圖的-layoutSubviews調用中,我找到了所需的大小各種標籤,並相應地設置其框架。但是,在滾動一點之後,很明顯,當單元被回收時,-layoutSubviews沒有被調用,導致一些單元沒有足夠大的標籤框來顯示它們的內容。當我的數據對象通過單元格傳遞給自定義視圖時,我調用[self setNeedsDisplay],我相信這會導致單元格調用-layoutSubviews。

我怎樣才能最好地確保標籤正確調整爲被髮送給他們的內容?

回答

1

如果要強制佈局,送setNeedsLayout(不setNeedsDisplay)的視圖。這聽起來像你需要在你的tableView:cellForRowAtIndexPath:發送[cell setNeedsLayout]返回單元格之前。

+0

愚蠢的問題:請問[細胞setNeedsLayout]導致所有的子視圖自己奠定了? – s73v3r 2012-08-17 18:09:34

+0

我認爲這取決於superview是否更改子視圖的大小。我相信一個視圖只會在其大小發生變化時自動標記爲佈局,它會被添加到窗口中,或者它會獲得或失去子視圖。 – 2012-08-17 18:12:14

+5

奇怪的是...不工作在iOS 7.任何想法? – 2014-05-21 20:16:20