爲UITextView設置行間距與爲UILabel設置行間距不同,他需要進行動態的設置。所以下面爲大家提供一種解決思路,即在func textViewDidChange(_ textView: UITextView)代理中添加如下代碼,我的實現語言爲swift。
if(textView.markedTextRange == nil){ //這個判斷條件是爲了防止由英文切換爲中文時鍵盤內有保留字符串造成重複寫入bug
let tempString = textView.text!
let paraph = NSMutableParagraphStyle()
paraph.lineSpacing = 10 //該屬性即爲行間距
paraph.lineBreakMode = .byCharWrapping //這個屬性是防止將字符串識別爲一個單詞而造成胡亂換行
let attributes = [
NSFontAttributeName:某種字體, //設置字體
NSParagraphStyleAttributeName: paraph,
NSForegroundColorAttributeName : 某種顏色 //設置顏色
]
textView.attributedText = NSAttributedString(string: tempString, attributes: attributes as Any as? [String : Any])
}
最後還有一個小提示:當在UITextView中插入文字用這個方法textView.insertText(text)或者textView.deleteBackward(),但是此時textView不是第一響應者,就會造成當textView區域不能完全顯示文字時文字不會上移,但是如果是第一響應者就會上移。這個也會造成一些bug,大家可以多加註意。