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