【发布时间】:2019-09-12 20:27:36
【问题描述】:
我有一个 value1 类型的单元格,因为我的一些详细标签文本太长并且被截断,所以我正在更新单元格高度以适合文本。
但是更新高度后,我的文本标签位于左上角,而不是垂直位于中间。像这样:
================== =====================
label => label
==================
=====================
有人知道如何解决这个问题吗?
编辑
改变高度的代码:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
var rowHeight=44.0
var numOfLines = 1;
if let cell = tableView.cellForRow(at: indexPath),let label = cell.detailTextLabel, let size = label.text?.size(withAttributes: [NSAttributedString.Key.font:label.font]){
let labelWidth = label.frame.width
label.textAlignment = .left
while(Int(size.width) > Int(labelWidth) * numOfLines){
rowHeight+=20;
numOfLines+=1
}
//becuase it was rounded down as int
numOfLines+=1
print("number of lines \(numOfLines)")
label.numberOfLines = numOfLines
label.lineBreakMode = .byCharWrapping
}
return CGFloat(rowHeight)
}
【问题讨论】:
-
展示你如何设置约束
-
@Sh_Khan 更新
-
不要获取
heightForRowAt中的单元格。没有必要。从数据模型而不是单元格中获取文本。 -
@rmaddy 我需要该单元格,因为我需要该单元格的标签尺寸来更新高度。
标签: ios swift uitableview uilabel