UITextView添加行间距计算准确的内容高度并解决光标扩大问题
直接使用 textView.font.lineHeight获取到的行高叠加后会出现偏差
CGFloat lineH = textView.font.lineHeight
设置textView的行间距,实现行间距可控再计算行高更准确
///textView添加行间距
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = 3.f;
NSDictionary *attributes = @{
NSFontAttributeName:[UIFont systemFontOfSize:17],
NSParagraphStyleAttributeName:paragraphStyle
};
textView.typingAttributes = attributes;
重新计算行高
CGFloat lineH = textView.font.lineHeight + kText_LineSpacing;
添加行间距后输入,会出现光标扩大问题
直接在自定义的UITextView中重写- (CGRect)caretRectForPosition:(UITextPosition *)position 方法
//原理
//UITextView遵循了UITextInput协议,其中有返回光标frame的方法
//- (CGRect)caretRectForPosition:(UITextPosition *)position
//可以使用自定义的TextView,重写返回光标frame的方法避免光标扩大问题
- (CGRect)caretRectForPosition:(UITextPosition *)position {
CGRect originalRect = [super caretRectForPosition:position];
originalRect.size.height = self.font.lineHeight + 2.f;
originalRect.size.width = 2.f;
return originalRect;
}
最终效果