我在哪里可以获得TableViewCell中使用的标签的正确大小

时间:2018-03-15 13:46:37

标签: ios swift uitableview

我的自定义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而不是我得到正确的大小。你对这个原因有所了解吗?

2 个答案:

答案 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
}