我想調整我的表格視圖單元格的大小,而不是從UITableViewDelegate
。我正在根據異步內容調整它們的大小,所以我無法在委託中調整它們的大小。是否可以在不使用UITableViewDelegate的情況下調整UITableViewCell的大小?
我嘗試在單元格內設置self.frame
,但表格視圖真的不高興。細胞重疊,各種瘋狂都在繼續。
我想調整我的表格視圖單元格的大小,而不是從UITableViewDelegate
。我正在根據異步內容調整它們的大小,所以我無法在委託中調整它們的大小。是否可以在不使用UITableViewDelegate的情況下調整UITableViewCell的大小?
我嘗試在單元格內設置self.frame
,但表格視圖真的不高興。細胞重疊,各種瘋狂都在繼續。
您只需使用表格視圖來控制高度。您可以通過使用調用remove來重新添加特定的單元格來告訴表單元已更改,因此不必重新加載整個表格 - 但必須使用委託回調函數tableView:heightForRow獲取高度: atIndexPath:
我不明白爲什麼這是不實際的。您可以運行任意數量的異步系統,以更新由表視圖委託所保存的中央高度緩存 - 每次創建單元時,都可以將其分配給委託作爲參考,因此可以與桌面進行對話並讓其返回它知道細胞需要重新裝載以及新的高度是多少。
如果你考慮一下,窮人的表格視圖是一個滾動視圖,它必須管理所有這些單獨的單元格並將它們保持在一個可視化的狀態 - 所以它真的沒有惡意的單元變得流氓並開始修改框架而不讓表格無論如何,都知道發生了什麼。最好讓桌子開着,告訴它該做什麼。
你應該嘗試管理單元內容查看propertys框架,而不是細胞框架本身 繼承人蔘考http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/occ/instp/UITableViewCell/contentView
我在contentView中添加視圖。我正在調整'self.frame'而不是'self.contentView.frame',因爲contentView會使用autoResizingMask自動調整大小。 無論哪種方式,設置'self.view'或'self.contentView'的框架都不能解決問題。如果你在單元格內調整它的大小,tableView仍然是超級混淆。 – 2009-09-21 17:40:50
不,您不能使用UITableViewDelegate
來設置單元格的大小。實際更改單元格的大小來更改單元格的大小,但不會更改UITableView
用於繪製單元格的偏移量。這將導致重疊,並在整個地方的差距。
您的朋友是tableView:heightForRowAtIndexPath:
,它應該是快速。如果覆蓋它,那麼表視圖就不能再假定所有行都具有相同的高度。因此每次獲取要繪製的單元格時,它必須查詢所有的行的高度。
是的,如果你調用[tableView reloadData],它會調用委託方法'tableView:heightForRow:atIndexPath:',你有機會根據你的數據計算出合適的單元高度。請記住,如果您的電池非常高或者其中有很多電池,則在滾動性能方面可能會很昂貴。 – runmad 2010-11-03 12:01:54
這就是爲什麼高度緩存部分非常重要,所以你不必做很多工作來告訴系統高度是多少。 – 2010-11-03 16:09:24
按照加拿大開發者的建議,您不需要調用[tableView reloadData]。相反,你可以調用[tableView beginUpdates]; [tableView endUpdates];這將導致tableView重新測量每個單元格(爲每個單元格調用heightForForRow:atIndexPath:),而無需重新加載每個單元格。 – TomSwift 2010-11-07 20:42:01