Я глубоко погрузился в TextKit и задался вопросом, как заполнители редактора реализованы в редакторе кода Xcode:
Вы также можете попробовать это сами и ввести что-то вроде: <#Hello#>
, которое автоматически превратится в заполнитель.
Редактор Xcode построен с помощью TextKit. После некоторых исследований я придумал две возможные стратегии:
- Использование
NSTextAttachment
: как только обнаруживается строка, соответствующая шаблону-заполнителю<#...#>
, эта строка удаляется и заменяетсяNSTextAttachment
, которая обрабатывает отрисовку фона и текста в форме значка. - Using
NSLayoutManager
: not sure if this would work, but it could go like this:- The start and end markers (glyphs)
<#
+#>
are hidden (layoutManager(... shouldGenerateGlyphs, forGlyphRange...)
) - Менеджер компоновки обрабатывает отрисовку фона значка в
drawBackground(forGlyphRange glyphsToShow: NSRange, at origin: NSPoint)
- The start and end markers (glyphs)
Я хотел бы реализовать что-то подобное и был бы признателен за любые предложения относительно того, как действовать дальше.