TextKit: Как функция заполнителя редактора реализована в XCode? - PullRequest
0 голосов
/ 21 ноября 2018

Я глубоко погрузился в TextKit и удивился, как заполнители редактора реализованы в редакторе кода Xcode:

Placeholder in Xcode

Вы также можете попробовать этоВы сами и напишите что-то вроде: <#Hello#>, который автоматически превращается в заполнитель.

Placeholder video

Редактор Xcode построен с помощью TextKit.После некоторого исследования я придумал две возможные стратегии:

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

Я хотел бы реализовать нечто подобное и был бы признателен за любые предложения о том, как действовать дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...