NSTableView和滚动背景NSColor:自动弹性颜色

时间:2013-10-30 09:57:58

标签: cocoa nstableview nsview

NSColorNSTableView使用setBackgroundColor:成功更改了NSTableView NSCell的背景tableView: willDisplayCell:forTableColumn:row:(使用NSTableView) 。现在,我希望背景在滚出时(顶部或底部)也有这种颜色,如下图所示,目前为白色。

enter image description here

我发现此链接似乎表明需要继承- (void)drawBackgroundInClipRect:(NSRect)clipRect并实施
{{1}},对此有何建议?

来源:Themeing NSTableView

2 个答案:

答案 0 :(得分:1)

我终于通过查看NSTableView类NSTableView.h的头文件找到了问题的答案,并发现了对此方法的提及:

/* Override to customize background drawing.
*/
- (void)drawBackgroundInClipRect:(NSRect)clipRect;

然后我将NSTableView子类化并覆盖了以前的方法:

@implementation MyColoredTableView

/**
 Sets the color of the background for elastic scrollers
*/
- (void)drawBackgroundInClipRect:(NSRect)clipRect
{
    [[NSColor redColor]set];    //Set your color here
    NSRectFill(clipRect);
}

@end

将InterfaceBuilder中NSTableView的班级更改为MyColoredTableView,您就完成了。

答案 1 :(得分:0)

>现在,我希望背景在>时也有这种颜色。向外滚动(顶部或底部),

为此,您需要有一个方法,当您滚动滚动视图时将调用该方法。因此,只需在下面包含此通知: -

-(void)viewDidLoad
{

// This notification will called when you scroll your scrollview
[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(boundsDidChange:) name:NSViewBoundsDidChangeNotification 
object:[yourScrollView contentView]];
}

-(void)boundsDidChange:(NSNotification*)not
{
//Write your code for changing background colors of tableview
}