NSOutlineView 控制高亮和缩进
Posted
技术标签:
【中文标题】NSOutlineView 控制高亮和缩进【英文标题】:NSOutlineView Control HighLight and indentation 【发布时间】:2011-02-07 21:44:33 【问题描述】:在我的大纲视图中,我使用的是 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 |
| |
======================================
【问题讨论】:
【参考方案1】:突出显示由NSOutlineView
处理(实际上,它是从NSTableView
继承的行为)。无论如何,您应该看看子类化NSOutlineView
和覆盖highlightSelectionInClipRect:
,而不是关注单元格。这就是您应该进行自定义高亮绘图的地方。
【讨论】:
不建议从 NSOutlineView 继承 (developer.apple.com/library/mac/#documentation/Cocoa/Reference/…)以上是关于NSOutlineView 控制高亮和缩进的主要内容,如果未能解决你的问题,请参考以下文章