我的最终目标是让用户能够将文本拆分为一个NSTextView
或UITextView
多个部分,其中两个后续部分在视觉上由自定义视图分隔符分隔(可能,但不一定是水平规则 - 我希望能够调整分离器的视觉外观没有麻烦)。
我需要一个适用于两个平台的解决方案:macOS 和 iOS。
(我的相关问题集中在 macOS 的解决方案上,其中一个使用了NSTextAttachmentCell
iOS 上不可用的 s 。)
我目前解决这个问题的方法如下:
- 我在窗口的工具栏中有一个按钮来插入分节符。
当用户点击该按钮时,我会创建一个没有文本但带有文本附件的新属性字符串:
let attachment = SectionChangeTextAttachment() let attachmentString = NSAttributedString(attachment: attachment)
(
SectionChangeTextAttachment
是我创建的自定义子类,NSTextAttachment
以便能够将此分节符附件与其他可能的附件区分开来。)我将其插入
attachmentString
到当前光标位置的文本存储中:textStorage.insert(attachmentString, at: textView.selectedRange().location)
我创建了一个自定义
NSLayoutManager
子类。它的任务是找到类的所有附件,SectionChangeTextAttachment
并用分隔图(或字形?)替换所有出现的地方。这就是问题所在:由于 Apple 的文档有限且部分过时,我无法弄清楚如何做到这一点。
所以我的问题是:
如何让我的布局管理器使用比字符/字形占用更多空间的自定义绘图(分隔符)替换附件字符(带有特定附件)?
(我猜附件字符没有字形,因此布局管理器没有为它提供任何空间。)
为了使这项工作,我需要覆盖哪些方法?
(这种方法一开始是否有意义?)