Я помню, как пытался сделать это несколько лет назад.Использование NSTextAttachment было методом, который работал для меня.Я пометил этот разговор с Майком Феррисом, чтобы помочь мне вспомнить, как это сделать.У меня больше нет кода, но это было довольно просто.Я вложил в подкласс NSTextAttachmentCell
, что соответствует NSTextAttachmentCellProtocol
.Вы переопределяете cellFrame(for textContainer: NSTextContainer, proposedLineFragment lineFrag: NSRect, glyphPosition position: NSPoint, characterIndex charIndex: Int)
, который дает вам доступ к его контейнеру, который может обеспечить его ширину, и у него есть фрагмент строки, который дает вам позицию y текста над вашим разделителем (плюс любой требуемый отступ).Затем просто переопределите метод draw(withFrame cellFrame: NSRect, in controlView: NSView?)
и нарисуйте свой делитель.
Что касается NSData полезной нагрузки, вы можете сделать что-нибудь с этим.Может быть, вы указали ширину линии, ее отступы, цвет и т. Д.?Преимущество использования NSTextAttachment заключается в том, что он остается встроенным в сам текст, например тег <hr>
.