我的自定义TableViewCell
包含lablel
。我想在显示单元格时检查label
的大小,以确定文本是否被截断。我找到了处理这个问题的不同主题,但对我来说没有任何作用。我试图检查layoutSubviews
override func layoutSubviews() {
super.layoutSubviews()
print(label.bounds.size.width)
}
并实施willDisplay
委托
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
.....
print(cell.label.bounds.size.width)
}
在加载视图之前,我总是得到相同的标签宽度(在界面构建器上设置的宽度)
修改:
如果我重新加载tableView而不是我得到正确的大小。你对这个原因有所了解吗?
答案 0 :(得分:0)
要访问CustomCell的属性,您必须执行与此类似的操作:
let customCell = cell as! YourCustomCellClass
print(customCell.lbl_test.frame.size.width)
此方法可以在你的" willDisplay单元格中实现,如果你想分别访问每个单元格,那么你必须为每个单元格创建适当的IndexPath
答案 1 :(得分:0)
这是我喜欢用来获取UILabel大小的函数,其中包含一串文本,一个特定的字体类型和宽度。您可以更新它以满足您的需求:
func sizeForLabel(text:String, font:UIFont, width:CGFloat) -> CGFrame{
let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: CGFloat.greatestFiniteMagnitude))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byWordWrapping
label.font = font
label.text = text
label.sizeToFit()
return label.frame
}