如何创建一个 NSLayoutManager,将其文本中的每个段落分配给不同的 NSTextContainer?
这类似于 TextKit 中常见的多页/列用法,但每个页面对应于可变长度的不同段落。
我认为最简单的方法是继承 NSTextContainer 并覆盖
- (CGRect)lineFragmentRectForProposedRect:(CGRect)proposedRect atIndex:(NSUInteger)characterIndex writingDirection:(NSWritingDirection)baseWritingDirection remainingRect:(CGRect *)remainingRect
在您的自定义方法中,您将检查属性characterIndex
并查看它们是否与分配给文本容器的段落匹配。如果是,则只返回super
该方法的实现,否则返回CGRectZero
表示建议的矩形对于此文本容器无效。这确实意味着您必须跟踪段落属性和它们相关的文本容器(反之亦然)。
另一种方法是在每个段落的末尾插入分页符控制字符(ASCII 代码:12)。