3

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

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

4

2 回答 2

5

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

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

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

于 2013-12-11T05:06:02.163 回答
0

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

于 2015-12-05T14:10:11.877 回答