【问题标题】:NSLayoutManager with an NSTextContainer per paragraphNSLayoutManager,每段有一个 NSTextContainer
【发布时间】:2013-11-25 19:06:29
【问题描述】:

如何创建一个 NSLayoutManager,将其文本中的每个段落分配给不同的 NSTextContainer?

这类似于 TextKit 中常见的多页/多列用法,但每个页面对应一个可变长度的不同段落。

【问题讨论】:

    标签: ios ios7 textkit


    【解决方案1】:

    我认为最简单的方法是继承 NSTextContainer 并覆盖

    - (CGRect)lineFragmentRectForProposedRect:(CGRect)proposedRect atIndex:(NSUInteger)characterIndex writingDirection:(NSWritingDirection)baseWritingDirection remainingRect:(CGRect *)remainingRect

    在您的自定义方法中,您将检查 characterIndex 处的属性,并查看它们是否与分配给文本容器的段落匹配。如果是,则返回super 的方法实现,否则返回CGRectZero 表示建议的rect 对该文本容器无效。这确实意味着您必须跟踪段落属性和与它们相关的文本容器(反之亦然)。

    【讨论】:

    【解决方案2】:

    另一种方法是在每个段落的末尾插入分页符控制字符(ASCII 码:12)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多