我有一個自定義表視圖單元格,里面有一個標簽。我注意到,每七個單元格的標簽都會過早地斷開第一行。截圖中的所有單元格在其標簽文本的開頭都有相同的字串子序列(黑色和紅色橢圓)。 中間的單元格是第7個,你可以猜到。如果我向下滾動7個單元格,結果將是一樣的
。標簽配置:
descriptionLabel.numberOfLines = 0
descriptionLabel.lineBreakMode = .byWordWrapping
我不知道該怎么做才能解決這個問題,懇請您的幫助。 提前感謝!
uj5u.com熱心網友回復:
"孤兒 "是指在段落末尾的一行中的一個單字。在排版學中,將一個字留在最后被認為是 "糟糕的排版"dangling。
因此,蘋果對UILabel進行了編碼,以避免 "孤兒"。
如果您不介意在您的標簽中出現孤兒,UITextView并沒有強制執行 - 所以您可以使用一個UITextView(禁用編輯和滾動)。
正如你在這張圖片中看到的那樣:
UITextView有默認的 "嵌入",用于實際框架中的文本。
因此,這里有一個@IBDesignable子類,它可以移除嵌入物:
span class="hljs-keyword">@IBDesignable
class TextViewLabel。UITextView {
override init(frame: CGRect, textContainer: NSTextContainer?) {
super.init(frame: frame, textContainer: textContainer)
commonInit()
}
required init?(coder aDecoder。NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
func commonInit() -> Void {
isScrollEnabled = false
isEditable = false
isSelectable = false
textContainerInset = UIEdgeInsets.zero
textContainer.lineFragmentPadding = 0
}
}
編輯 為了澄清...
這里有三個默認的UILabel,所有的寬度都完全相同:
注意,在標簽A中,第一行的末尾有足夠的空間容納單詞"an",但它被包裹到第二行以防止出現孤兒--也就是說,防止第二行出現單字。
在標簽B中,單詞"an"停留在第一行,因為單詞包裝導致兩個單詞在第二行。
正如我們在標簽C中看到的那樣,如果文本被包裹到超過兩行,UILabel 將允許一個孤兒 - 最后一行的一個單詞。
通過用TextViewLabel子類替換默認的UILabel,我們可以強制雙行包裝,忽略 "孤兒 "包裝:
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/311733.html
標籤:




