Как нарисовать полупрозрачный NSTableRowView?

Я хочу настроить рисование фона строки плавающей группы и не могу этого сделать. По сути, я хочу частично прозрачный фон (который всегда остается одинаковым при прокрутке или нет), но что-то меняет внешний вид моего подкласса NSTableRowView когда табличное представление не прокручивается (хотя при прокрутке оно выглядит как задумано). Вот код и изображение, объясняющее проблему.

- (void)drawBackgroundInRect:(NSRect)dirtyRect
{
    [[NSColor colorWithCalibratedWhite:1.0 alpha:0.5] set];
    [[NSBezierPath bezierPathWithRect:dirtyRect] fill];
}

Для представления ячеек таблицы я пытался использовать NSTableCellView, NSView и простой NSTextField (это тот, который вы видите на изображении), но результат всегда одинаков.

2 ответа

Решение

Я смог исправить это, включив слой Core Animation в представлении ячейки заголовка и в виде таблицы.

Если вы не делаете ничего, кроме заливки фона строки цветом, вам следует установить backgroundColor собственностью NSTableRowView вместо переопределения -drawBackgroundInRect:,

Если вам нужно это переопределение для дальнейшей настройки, я заметил, что вы забыли позвонить [super drawBackgroundInRect:dirtyRect] в вашей реализации, которая, вероятно, отвечает за поведение, которое вы видите.

Другие вопросы по тегам