如何在自定义UITableViewCell中获取UILabel的字体大小?
问题描述:
我的UITableView与具有自定义类细胞,例如HistoryCell
如何在自定义UITableViewCell中获取UILabel的字体大小?
细胞的UI元素是由在Interface Builder与类属性链接:
@IBOutlet var contentLabel: UILabel!
我的任务是正确的高度设定,因为这种细胞contentLabel
是多行。我想用String.boundingRect
法计算的高度,但它需要UIFont
我就可以从界面生成器复制字体属性的代码在开发时间,但如果字体将在未来被改变,代码将需要修复
相反,我想从内存中获取字体细胞
我创建静态实例,并用它来回报字体:
class HistoryCell: UITableViewCell {
private static let instance = HistoryCell()
static func textFont() -> UIFont {
return instance.contentLabel.font
}
}
但是当我调用方法,contentLabel
是nil
为什么它是零?
我可以用另一种方式获取单元元素字体吗?
答
我想你已经使用IBOutlet中连接内容标签,当你创建HistoryCell的情况下,它不会加载笔尖文件引用。正因为如此它回报你无对象内容标签
你可以做同样的与
open func textFont() -> UIFont {
return self.titlelabel.font
}
,并呼吁使用细胞的对象,它是用出队FUNC
let cell = tableView.dequeueReusableCell(withIdentifier: "ParallexCell", for: indexPath) as! HistoryCell
let font = cell.textFont()
答
我收到这个功能找到没有字体计算的简单解决方案:
func tableView(_ tableView: UITableView, heightForRowAt
indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
你检查了co将IBOutlet连接到contentLable? – karthikeyan
您必须确保在视图“加载”后检查它。例如,在'awakeFromNib()' – Tobonaut
@Tobonaut尝试它,是否有可能当tableview单元格在storyboard不在自己的xib文件中? –