[英]Dynamic row heights of a UITableView inside a UITableViewCell
我有一個“主” UITableView,其中使用了從.xib加載的不同單元格。 其中一些單元格本身也具有UITableView。
現在,我已經將每個單元格的行高設置為原始xib大小。 但是,我想使高度動態變化,並與“子” UITableView中的行數相對應。
我遇到以下問題:
我嘗試了以下方法:
但是,在這種情況下,單元格將使用“估計的”高度來布置自己的行。 因此,它總是太大或太小。
我該如何解決這個問題?
第一種方法:
為子tableView創建一個子類,並覆蓋internalContentSize。
class MyOwnTableView: UITableView { override var intrinsicContentSize: CGSize { self.layoutIfNeeded() return self.contentSize } override var contentSize: CGSize { didSet{ self.invalidateIntrinsicContentSize() } } override func reloadData() { super.reloadData() self.invalidateIntrinsicContentSize() } }
在“界面”構建器中,將子tableView的類更改為MyOwnTableView(子類UITableView)。
設置父表和子表視圖的自動行高。
tableView.estimatedRowHeight = 60.0; tableView.rowHeight = UITableViewAutomaticDimension;
第二種方法: 1.為子tableView創建一個具有任何值的高度約束,並連接設置子tableView高度的IBOutlet。 2.將高度約束的常量設置為tableView.contentSize.height
self.tableViewHeight.constant = self.tableView.contentSize.height
您可以創建一個對象,該對象將創建要放入單元格的類的模板對象,在其中放入數據,計算其大小,然后將其返回到master tableView的sizeForItem方法上。 這樣,當主tableView准備數據時,您將能夠為項目設置返回的計算大小。
這就是我在項目中做到的方式。
您可以使用緩存來改進此對象,使其通用並在需要時使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.