在 UITableview 中自动布局多行标签 // Swift 4.2
Auto layout multiple lines label in UITableview // Swift 4.2
我写了这样的扩展来在 UITableview 中显示我的数据。但有时我的数据可能包含超过 1 行,我需要创建一些内容来显示完整内容。我怎样才能更改我的代码(如下)来做到这一点?
extension ViewController: UITableViewDataSource, UITableViewDelegate {
// Define no of rows in your tableView
func tableView(_ chatHistoryTable: UITableView, numberOfRowsInSection section: Int) -> Int {
return messagesData.count
}
func tableView(_ chatHistoryTable: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = chatHistoryTable.dequeueReusableCell(withIdentifier: "userMessage")! as UITableViewCell
cell.textLabel!.text = messagesData[indexPath.row]
cell.textLabel!.textAlignment = .right
return cell;
}
}
我想我也应该为 UITableViewCell 写一些东西,但我不知道,我是对的。
请帮我解答这个问题。
这里需要做两处改动。
初始设置 Self Sizing Cell 的估计高度和自动尺寸,在您的页面加载时调用以下行。
tableView.estimatedRowHeight = 44.0
tableView.rowHeight = UITableView.automaticDimension
例如
@IBOutlet weak var yourTableviewName: UITableView!{
didSet{
yourTableviewName.tableFooterView = UIView()
yourTableviewName.estimatedRowHeight = 44.0
yourTableviewName.rowHeight = UITableView.automaticDimension
}
}
次要用于自动换行,numberOfLines 用于标签。按照你的 cellforRow 方法的下面一行
func tableView(_ chatHistoryTable: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = chatHistoryTable.dequeueReusableCell(withIdentifier: "userMessage")! as UITableViewCell
cell.textLabel!.numberOfLines = 0
cell.textLabel!.lineBreakMode = .byWordWrapping
cell.textLabel!.text = messagesData[indexPath.row]
cell.textLabel!.textAlignment = .right
return cell;
}
}
第 1 步。在自定义 Table View Cell
中添加一连串不间断的垂直约束
第2步.设置单元格估计高度
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
步骤3:Make标签支持多行
textLabel.LineBreakMode = UILineBreakMode.WordWrap;
textLabel.Lines = 0;
我写了这样的扩展来在 UITableview 中显示我的数据。但有时我的数据可能包含超过 1 行,我需要创建一些内容来显示完整内容。我怎样才能更改我的代码(如下)来做到这一点?
extension ViewController: UITableViewDataSource, UITableViewDelegate {
// Define no of rows in your tableView
func tableView(_ chatHistoryTable: UITableView, numberOfRowsInSection section: Int) -> Int {
return messagesData.count
}
func tableView(_ chatHistoryTable: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = chatHistoryTable.dequeueReusableCell(withIdentifier: "userMessage")! as UITableViewCell
cell.textLabel!.text = messagesData[indexPath.row]
cell.textLabel!.textAlignment = .right
return cell;
}
}
我想我也应该为 UITableViewCell 写一些东西,但我不知道,我是对的。
请帮我解答这个问题。
这里需要做两处改动。
初始设置 Self Sizing Cell 的估计高度和自动尺寸,在您的页面加载时调用以下行。
tableView.estimatedRowHeight = 44.0 tableView.rowHeight = UITableView.automaticDimension
例如
@IBOutlet weak var yourTableviewName: UITableView!{ didSet{ yourTableviewName.tableFooterView = UIView() yourTableviewName.estimatedRowHeight = 44.0 yourTableviewName.rowHeight = UITableView.automaticDimension } }
次要用于自动换行,numberOfLines 用于标签。按照你的 cellforRow 方法的下面一行
func tableView(_ chatHistoryTable: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = chatHistoryTable.dequeueReusableCell(withIdentifier: "userMessage")! as UITableViewCell cell.textLabel!.numberOfLines = 0 cell.textLabel!.lineBreakMode = .byWordWrapping cell.textLabel!.text = messagesData[indexPath.row] cell.textLabel!.textAlignment = .right return cell; } }
第 1 步。在自定义 Table View Cell
中添加一连串不间断的垂直约束第2步.设置单元格估计高度
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
步骤3:Make标签支持多行
textLabel.LineBreakMode = UILineBreakMode.WordWrap;
textLabel.Lines = 0;