我的最终目标是使用户能够将NSTextView
或UITextView
内的文本拆分成几个部分,其中两个后续部分在视觉上由自定义视图分隔符(可能但不一定是水平尺-我希望能够轻松地调整分隔符的视觉外观)。
我需要一个适用于两个平台的解决方案:macOS和iOS 。
(我的related question专注于针对macOS的解决方案,其中一种利用了NSTextAttachmentCell
在iOS上不可用。)
我目前解决此问题的方法如下:
当用户点击该按钮时,我将创建一个新的属性字符串,其中没有文本,但带有文本附件:
let attachment = SectionChangeTextAttachment()
let attachmentString = NSAttributedString(attachment: attachment)
({SectionChangeTextAttachment
是我创建的NSTextAttachment
的自定义子类,目的是能够将本分节符附件与其他可能的附件区分开。)
我将attachmentString
插入到当前光标位置的文本存储中:
textStorage.insert(attachmentString, at: textView.selectedRange().location)
我创建了一个自定义NSLayoutManager
子类。它的任务是查找类SectionChangeTextAttachment
的所有附件,并用分隔符图形(或字形?)替换所有出现的附件。这就是问题所在:由于Apple的文档有限且部分过时,我不知道该怎么做。
所以我的问题是:
如何让我的布局管理器用自定义图形(分隔符)替换附件字符(带有特定附件),该自定义图形比字符/字形占用更多的空间?
(我想附件字符没有字形,因此布局管理器没有为其提供任何空间。)
我需要重写哪些方法才能使其正常工作?
(这种方法从一开始就有意义吗?)