首页 > 解决方案 > 在 Swift 中,我如何知道单词是否包含在 UILabel 中

问题描述

在 Swift 中,我想知道是否有办法获得一个单词是否被换行。例如,我有一个 UILabel。

let label = UILabel()
label.text = "Hey! Hello World!"
label.areWordsWrapped()

如果文本显示如下:

Hey! Hell
o World!

//label.areWordsWrapped() should return true

如果这:

Hey! Hello
World!

//label.areWordsWrapped() should return false

是否有实现此目的的功能或属性?

标签: iosswifttextuilabelword-wrap

解决方案


你可以试试这个,可能不完美

extension UILabel {
func areWordsWrapped()->Bool {
    let fontAttributes: [NSAttributedString.Key : Any] = [NSAttributedString.Key.font: self.font!]
    let splitText: [String] = self.text!.split {$0 == " "}.map(String.init)
    for text in splitText {
        let width = text.size(withAttributes: fontAttributes).width
        if width > self.frame.width {
            return true
        }
    }
    return false
}
}

编辑:

如果您将换行符更改为字符换行,它将失败 在此处输入图像描述

如果使用默认换行符就可以了 在此处输入图像描述

如果您使用字符换行,我认为几乎可以肯定它将被换行,因为几乎不可能在没有输入/换行的情况下在每一行中具有相同的宽度


推荐阅读