首页 > 解决方案 > Swift:在屏幕周围截断(环绕)并转到新行时将长字符串拆分为较小的字符串

问题描述

每次到屏幕末尾并开始新行时,如何将长字符串拆分为三个不同的字符串。

注意:字符串没有换行符。所以基本上作为一个例子,我想从一个字符串中得到 3 个不同的字符串,因为字符串很长并且两次到屏幕的末尾。看看下面的图片。

下图是我目前拥有的,它是一根长字符串,我想在每次换行时将它分解成更小的 3 根字符串。

下面的代码为您提供了长字符串环绕屏幕的次数。

extension UILabel {
 func numberOfLines() -> 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
    }
}

标签: iosswift

解决方案


如果我理解正确,您想换行长文本。

您可以执行以下操作来实现上述目的:

label.numberOfLines = 0;
label.lineBreakMode = .byWordWrapping

如果您希望标签将其字体大小调整为可用宽度,您可以执行以下操作:

label.numberOfLines = 0;
label.lineBreakMode = .byClipping
label.adjustsFontSizeToFitWidth = true

推荐阅读