ios textView 设置行间距的一些bug
目前有这样一个需求,在用户输入文字的时候要设置行间距,因为不设置的话行与行之间挨太近了,设置行间距设置行间距从网上找的方法是
-
(void)textViewDidChange:(UITextView *)textView
{
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = 5; // 字体的行间距
paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;NSDictionary *attributes = @{NSFontAttributeName:[UIFont systemFontOfSize:14],
但是这不好的地方是打出汉字会出现字母,越往后,字母出现越多.
NSParagraphStyleAttributeName:paragraphStyle
};
textView.attributedText = [[NSAttributedString alloc] initWithString:textView.text attributes:attributes];
}
Untitled.gif
最后我自己试出来了, 但是要判断过滤候选字符,如果没有候选字符才给他换行 -
(void)textViewDidChange:(UITextView *)textView
{
// 判断是否有候选字符,如果不为nil,代表有候选字符
if(textView.markedTextRange == nil)
{
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = 5; // 字体的行间距
paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;NSDictionary *attributes = @{NSFontAttributeName:[UIFont systemFontOfSize:14], NSParagraphStyleAttributeName:paragraphStyle }; textView.attributedText = [[NSAttributedString alloc] initWithString:textView.text attributes:attributes];
}
}
Untitled.gif
最后我想说的是网上很多解决方法都是我考你你考我,不是很靠谱, 还是要自己多测一下.
另外textView设置间距后引发的其他问题,可以参考这位仁兄的简书.https://www.jianshu.com/p/0a14e6304b68