2017-03-23 69 views
0

我有一個表,我斯威夫特項目這樣斯威夫特UITableViewAutomaticDimension不工作

var tableView: UITableView! 
tableView = UITableView() 
tableView.dataSource = self 
tableView.delegate = self 
tableView.rowHeight = UITableViewAutomaticDimension  
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return postTexts.count 
    }  
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
     return 250; 
    } 

    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
     return 5 
    } 

我希望我的tableview的高度自動因此,我使用 UITableViewAutomaticDimension,但它仍然呈現近一半的細胞寬

enter image description here

+0

@ RajeshkumarR然後我如何改變細胞的高度? –

+0

「我想要我的桌面視圖的高度」是不是指細胞高度?我建議添加屏幕截圖,瞭解您獲得的輸出結果。 –

+0

@AhmadF我確實添加了圖片 –

回答

1

需要在此工作的內在細胞的大小。完全刪除heightForRowAt。你的單元格中的約束條件應該確定單元格的大小,這意味着你的約束條件至少應該從頂部和底部固定。添加以下代碼設置rowHeight後:

tableView.estimatedRowHeight = 250 
1

您必須刪除-heightForRow方法和表中設置查看estimatedRowHeight
estimatedRowHeight用於計算電視機的條形尺寸等,因此它應該是一個真實值,儘可能接近表格視圖單元高度的平均大小。
現在,如果您正在使用自動佈局並且約束設置正確,您應該會看到UITableViewCell的正確調整大小。要正確設置TVC內的約束條件,您應該考慮將它們放置在可以控制單元格大小的位置。
例如說你的電視廣告只有一個標籤,而且該標籤有4個約束條件附加到它的超級視圖上:頂部,底部,尾部和固定的常量大小。 UILabel實例也將numberOfLines設置爲0(意味着它可以擴展以填充所有文本)。
當自動佈局引擎開始請求標籤intrinsicContentSize時,標籤將返回一個適合所有文本的值,超級視圖尺寸將根據該值更改大小。
如果您像以前那樣將TVC修復到特定高度,則TVC無法自行擴展。

0

我有約束的問題,所以這是我做的。
首先,我加入heightForRowAt

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    return 100 
} 

然後我創建了一個變量

let tableViewHeight = postTexts.count*100 

也放到了我的高度約束

tableView.anchor(PostsDiv.bottomAnchor, left:view.leftAnchor, bottom: nil, right: view.rightAnchor, topConstant: 40, leftConstant: 15, bottomConstant: 0, rightConstant: 15, widthConstant: 0,heightConstant: CGFloat(tableViewHeight)) 

而且它非常適合我

+0

你正在設置tableview的高度等於單元格的數量*這些單元格的高度?它可能工作,但它不是正確的方式 – Hapeki

+0

@Hapeki爲什麼不呢? –

+0

其中一個原因是單元格可能不會出列,而您的tableView高度會導致巨大的問題。 示例:您的postTexts.count爲400.您的tableview高度爲400 * 100,這會導致可怕的,可怕的,糟糕的性能。這完全針對你的tableView的最佳實踐。 – Hapeki