iOS UITextView:增加行间距而不改变光标的高度?

我已经把头撞在墙上太久了。 我想创建双倍行距的输入文本,光标与字体的行高保持一致。

我尝试了很多方法:

  • 使用NSLayoutManager的委托-layoutManager:lineSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:
  • 使用属性字符串并设置NSParagraphStyle的-lineHeightMultiple和-lineSpacing属性
  • 使用自定义NSTextStorage也尝试设置该段落样式。

……但它们最终都是一块太大的克拉,要么延伸到上面的空白区域,要么延伸到每条线下方的空白区域。

关于我可以尝试下一步实现这种布局的任何想法?

如果您已经拥有所需的布局并且问题只是插入符号的大小,则可以简单地inheritanceUITextView并覆盖以下方法:

- (CGRect)caretRectForPosition:(UITextPosition *)position { CGRect *originalRect = [super caretRectForPosition:position]; // Resize the rect. For example make it 75% by height: originalRect.size.height *= 0.75; return originalRect; } 

这个诀窍,这对我来说都适用于ios6和7