Я глубоко погрузился в TextKit и удивился, как заполнители редактора реализованы в редакторе кода Xcode:
Вы также можете попробовать этоВы сами и напишите что-то вроде: <#Hello#>
, который автоматически превращается в заполнитель.
Редактор Xcode построен с помощью TextKit.После некоторого исследования я придумал две возможные стратегии:
- Использование
NSTextAttachment
: как только обнаружена строка, соответствующая шаблону заполнителя <#...#>
, эта строка удаляется и заменяется на NSTextAttachment
, который обрабатывает рисование фона в виде значка и текста. - Использование
NSLayoutManager
: не уверен, что это будет работать, но это может выглядеть так: - Начало иконечные маркеры (глифы)
<#
+ #>
скрыты (layoutManager(... shouldGenerateGlyphs, forGlyphRange...)
) - Менеджер по расположению обрабатывает рисование фона значка в
drawBackground(forGlyphRange glyphsToShow: NSRange, at origin: NSPoint)
Я хотел бы реализовать нечто подобное и был бы признателен за любые предложения о том, как действовать дальше.