我的UITableView包含具有自定义类的单元格,例如HistoryCell
Cell UI元素由界面构建器组成,并与类属性链接:
@IBOutlet var contentLabel: UILabel!
由于contentLabel
是多行,我的任务设置正确,因为这些单元格的高度。我想使用String.boundingRect
方法计算身高,但需要UIFont
我可以在开发时将字体属性从界面构建器复制到代码,但如果将来更改字体,则需要修改代码
相反,我想从内存单元格中获取字体,我创建静态实例并将其用于返回字体:
class HistoryCell: UITableViewCell {
private static let instance = HistoryCell()
static func textFont() -> UIFont {
return instance.contentLabel.font
}
}
但是当我调用HistoryCell.textFont
方法时,contentLabel
为nil
为什么它为零?
我可以用其他方式获取单元格字体吗?
答案 0 :(得分:0)
我猜您已使用 IBOutlet 连接 contentLabel ,并且在创建HistoryCell实例时,它不会加载nib文件引用。由于这个,它将返回contentLabel的
你也可以用
做同样的事open func textFont() -> UIFont {
return self.titlelabel.font
}
并使用dequeue func
接收的单元格对象调用此函数let cell = tableView.dequeueReusableCell(withIdentifier: "ParallexCell", for: indexPath) as! HistoryCell
let font = cell.textFont()
答案 1 :(得分:0)
我找到了没有字体计算的简单解决方案:
func tableView(_ tableView: UITableView, heightForRowAt
indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}