NSOutlineView Control HighLight и отступы

В моем представлении Outline я использую CustomCell, который представляет собой не что иное, как код из Cocoa ImageTextCell RefrenceCode с некоторыми изменениями,

Можно ли изменить цвет выделения ячейки?

Пока что я сделал следующее: - (void) drawWithFrame: (NSRect) cellFrame inView: (NSView *) controlView {

if([self isHighlighted]){
    NSColor *evenColor = [NSColor colorWithCalibratedRed:.1 green:0.1 blue: 0.1   
         alpha:1.0];
    [evenColor set];
    NSRectFill(cellFrame);
    bSelected = YES;
}

}

Это работает, но что происходит, я мог видеть, цвет ячейки подсветки сначала начинается с системного цвета по умолчанию, затем он будет переопределен evenColor, я чувствую, что проблема в cellFrame.origin.x, она не начинается с 0,

вывод был таким, как показано ниже, после применения этого фрагмента кода

----- My Custom Cell ----------------
======================================
| blue |                             |
| color|    even Color               | 
|      |                             |
======================================

и чего я ожидал

----- My Custom Cell ----------------
======================================
|                                    |
|    even Color                      | 
|                                    |
======================================

person Amitg2k12    schedule 07.02.2011    source источник


Ответы (1)


Подсветкой занимается NSOutlineView (ну, фактически, это поведение, унаследованное от NSTableView). В любом случае, вместо того, чтобы сосредотачиваться на ячейке, вам следует взглянуть на подкласс NSOutlineView и переопределение _ 4_. Вот где вы должны сделать свой собственный рисунок выделения.

person Alex    schedule 07.02.2011
comment
не рекомендуется создавать подкласс от NSOutlineView (developer.apple.com/library/mac/#documentation/Cocoa/Reference/) - person ; 15.08.2011