NSLayoutManager 每段有一个 NSTextContainer

Ric*_*ble 3 ios ios7 textkit

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

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

Ben*_*man 5

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

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

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