NSOutlineView控制HighLight和缩进

时间:2011-02-07 21:44:34

标签: objective-c cocoa nstableview nsoutlineview nscell

在我的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;
}

}

这是有效的但是发生的事情,我可以看到,hightlight单元格颜色首先从系统默认颜色开始,然后,它将被evenColor覆盖, 我觉得问题是cellFrame.origin.x,它不是从0开始,

应用这段代码后,

输出如下所示

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

以及我所期待的

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

1 个答案:

答案 0 :(得分:0)

突出显示由NSOutlineView处理(实际上,它来自NSTableView的继承行为)。无论如何,你应该看看子类NSOutlineView并覆盖highlightSelectionInClipRect:,而不是关注单元格。这就是你应该做自定义高亮绘图的地方。