簡體   English   中英

在 Swift 中,我如何知道單詞是否包含在 UILabel 中

[英]In Swift, how do I know if words are wrapped in an 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

是否有 function 或屬性來實現這一目標?

你可以試試這個,可能不完美

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
}
}

編輯:

如果您將換行符更改為字符換行,它將失敗在此處輸入圖像描述

如果使用默認換行符就可以了在此處輸入圖像描述

如果您使用字符換行,我認為幾乎可以肯定它會被換行,因為幾乎不可能在沒有輸入/換行的情況下在每一行中具有相同的寬度

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM