1、設(shè)置行間距導(dǎo)致的問(wèn)題
func setLineSpace(lineSpace: CGFloat = spaceLine) -> NSAttributedString {
????let mutableString = NSMutableAttributedString(string: self)
????let paragraphStyle = NSMutableParagraphStyle()
????paragraphStyle.lineSpacing = lineSpace
????mutableString.addAttributes([NSAttributedString.Key.paragraphStyle : paragraphStyle], range: NSRange(location: 0, length: self.count)) ????return mutableString
}
問(wèn)題描述,設(shè)置行間距后,當(dāng)內(nèi)容包含中文時(shí),且UIlabel只有一行時(shí),UILabel的下邊距將會(huì)被加大,導(dǎo)致顯示不對(duì)。
解決方案
判斷是否為一行同時(shí)包含中文文字,如果是則高度需要處理
var height =? label.sizeThatFits(size)
if line == 1 && containHZ {
? ??height =?height -?label.font.lineHeight + spaceLineHeight
}
當(dāng)然這樣的計(jì)算,結(jié)果也不完全正確,但是測(cè)試效果可以接受
2、文字上邊距問(wèn)題
UI的設(shè)計(jì)圖中,文字有上邊距如:

但實(shí)際上,UILabel無(wú)法設(shè)計(jì)上邊距,目前只能通過(guò)慢慢調(diào)整來(lái)配合UI
3、加入圖片后的富文本高度計(jì)算不對(duì)
加入后圖片的富文本調(diào)整每行文字的高度時(shí),此時(shí)設(shè)置numberOfLine = 0,行數(shù)計(jì)算可能不對(duì),此時(shí)可以用UITextView替換UILabel。大多數(shù)UILabel的問(wèn)題都可以使用UITextView替換解決