gpt4 book ai didi

ios - 如何找到 UILabel 的实际行数?

转载 作者:IT王子 更新时间:2023-10-29 07:34:39 30 4
gpt4 key购买 nike

在使用 textfont 初始化 UILabel 之后,如何找到它的实际 行数?我已将其 numberOfLines 属性设置为 0,因此它将扩展到需要的行数。但是,我怎么才能知道在我设置了它的text之后它最终得到了多少行呢?

我发现了类似的问题,但似乎没有一个提供简明的答案,在我看来,它一定很容易得到它,而无需在使用 boundingRectWithSize 时产生任何开销sizeWithFont,...

最佳答案

这些都不适合我。下面一个做了,

swift 4.2:

extension UILabel {
func calculateMaxLines() -> Int {
let maxSize = CGSize(width: frame.size.width, height: CGFloat(Float.infinity))
let charSize = font.lineHeight
let text = (self.text ?? "") as NSString
let textSize = text.boundingRect(with: maxSize, options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: font], context: nil)
let linesRoundedUp = Int(ceil(textSize.height/charSize))
return linesRoundedUp
}
}

swift 4/4.1:

extension UILabel {

func calculateMaxLines() -> Int {
let maxSize = CGSize(width: frame.size.width, height: CGFloat(Float.infinity))
let charSize = font.lineHeight
let text = (self.text ?? "") as NSString
let textSize = text.boundingRect(with: maxSize, options: .usesLineFragmentOrigin, attributes: [.font: font], context: nil)
let linesRoundedUp = Int(ceil(textSize.height/charSize))
return linesRoundedUp
}

}

swift 3:

extension UILabel {

func calculateMaxLines() -> Int {
let maxSize = CGSize(width: frame.size.width, height: CGFloat(Float.infinity))
let charSize = font.lineHeight
let text = (self.text ?? "") as NSString
let textSize = text.boundingRect(with: maxSize, options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName: font], context: nil)
let linesRoundedUp = Int(ceil(textSize.height/charSize))
return linesRoundedUp
}

}

关于ios - 如何找到 UILabel 的实际行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28108745/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com