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

时间:2013-10-16 17:41:50

标签: ios ios7 uitextview

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

我尝试了很多方法:

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

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

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

1 个答案:

答案 0 :(得分:5)

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

- (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