首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SKLabelNode -获取实际行数

SKLabelNode -获取实际行数
EN

Stack Overflow用户
提问于 2018-01-31 18:35:40
回答 1查看 414关注 0票数 1

在SpriteKit中,您现在可以设置SKLabelNode的行数,因此标签可以通过几行。

代码语言:javascript
运行
复制
let lb = SKLabelNode(fontNamed: "Courier-bold")
lb.numberOfLines = 0
lb.preferredMaxLayoutWidth = size.width

是否有任何方法可以确定实际呈现给SKLabelNode的行数?

EN

回答 1

Stack Overflow用户

发布于 2018-01-31 22:17:38

您应该通过生成具有相同文本格式参数的UILabel来计算行数,并计算其实际行数described here

带有常规文本的

代码语言:javascript
运行
复制
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)

带有属性化文本的(如果它只使用一种字体):

代码语言:javascript
运行
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48549219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档