4

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

我尝试了多种方法:

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

...但它们都以克拉太大而告终,要么延伸到上方的空白处,要么延伸到每行下方的空白处。

关于接下来我可以尝试什么来实现这种布局有什么想法吗?

4

1 回答 1

7

如果您已经有了所需的布局并且问题只是插入符号的大小,您可以简单地继承 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

于 2013-10-16T17:50:48.820 回答