点击显示更多按钮标签需要设置tableViewCell
后,我试图在label.numberOfLines = 0
中实现动态标签高度。
然后细胞高度和标签高度应该动态增加。
以下是我的代码(当tableView
重新加载重复使用的单元格的相同标签高度时)
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: UITableViewCell =
self.tableView.dequeueReusableCell(withIdentifier:
"BTSTableViewCellIdentifier")!
cell.configureWithPost(posts[indexPath.row])
cell.delegate = self
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath:
IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt
indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
func configureWithPost(_ postViewModel: BTSTableCellViewModel) {
self.postViewModel = postViewModel
usernameLabel.text = postViewModel.username
detailtextLabel.numberOfLines = 2
detailtextLabel.text = postViewModel.textDetail
}
@IBAction func showmorePressed(_ sender: Any) {
detailtextLabel.numberOfLines = 0;
self.tableView.reload()
}
答案 0 :(得分:1)
您还需要管理heightForRowAtIndexPath:
中的高度func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
同样在showMore Button Action中,
@IBAction func showmorePressed(_ sender: Any) {
detailtextLabel.numberOfLines = 0;
self.tableView.reloadData()
}
答案 1 :(得分:0)
CGSize boundingBox = [label.text boundingRectWithSize:constraint
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:label.font}
context:context].size;
size = CGSizeMake(ceil(boundingBox.width), ceil(boundingBox.height));