在SpriteKit中,您现在可以设置SKLabelNode的行数,因此标签可以通过几行。
let lb = SKLabelNode(fontNamed: "Courier-bold")
lb.numberOfLines = 0
lb.preferredMaxLayoutWidth = size.width是否有任何方法可以确定实际呈现给SKLabelNode的行数?
发布于 2018-01-31 22:17:38
您应该通过生成具有相同文本格式参数的UILabel来计算行数,并计算其实际行数described here。
带有常规文本的:
let preferredMaxWidth: CGFloat = <maximum width of the label>
let label = UILabel()
label.text = lb.text
label.font = UIFont(name: lb.fontName, size: lb.fontSize)
label.numberOfLines = lb.numberOfLines
label.frame.size.width = preferredMaxWidth
label.sizeToFit()
label.frame.size.width = preferredMaxWidth
let numberOfLines = Int(label.frame.size.height / label.font.pointSize)带有属性化文本的(如果它只使用一种字体):
let preferredMaxWidth: CGFloat = <maximum width of the label>
let label = UILabel()
label.attributedText = lb.attributedText
label.numberOfLines = lb.numberOfLines
label.frame.size.width = preferredMaxWidth
label.sizeToFit()
label.frame.size.width = preferredMaxWidth
guard let pointSize = (lb.attributedText.attributes(at: 0, effectiveRange: nil)[.font] as? UIFont)?.pointSize else {
return
}
let numberOfLines = Int(label.frame.size.height / pointSize)https://stackoverflow.com/questions/48549219
复制相似问题