NSTextBlock backgroundColor не рисуется

У меня есть подкласс NSTextBlock с определенным набором backgroundColor. Теперь, когда я добавляю пользовательский стиль абзаца к диапазону текста, подобному этому

let block = MyTextBlock()
block.backgroundColor = myBackgroundColor

let pstyle = NSMutableParagraphStyle()
pstyle.textBlocks = [block]

attributedText.addAttribute(.paragraphStyle, value: pstyle, range: textRange)

// Append the attributed string to the text views textStorage ...

текстовый блок отображается без цвета фона. Я знаю, что текстовые блоки работают, потому что вызывается rectForLayout, но когда я пытаюсь переопределить drawBackground, он никогда не вызывается.

Должен ли я сделать что-то еще, чтобы NSTextBlock отрисовали свой фон?

PS: Границы тоже, кажется, игнорируются. Я также пытался найти образец на Github, но он также не рисует фон, несмотря на установленный цвет фона.


person Erik Aigner    schedule 14.09.2020    source источник


Ответы (1)


Перепробовав все, мне наконец удалось заставить фон отображаться, установив

setValue(100, type: .percentageValueType, for: .width)

Кажется, что логика отрисовки ожидает какое-то значение для размера содержимого. Действительно хорошая работа с документацией. Этого требования нигде нет.

person Erik Aigner    schedule 14.09.2020
comment
Спасибо за это — я отказался от работы с NSTextBlocks после того, как не смог установить фон, хотя это казалось возможным. Дам ему еще одну попытку сейчас. - person Tritonal; 14.09.2020