为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,大家可以多加注意。