0

我已经成功地改变了NSColorNSTableView使用setBackgroundColor:的背景NSTableViewNSCell(使用tableView: willDisplayCell:forTableColumn:row:)。现在,我希望背景在滚动时(顶部或底部)也具有这种颜色,如下图所示,当前为白色。

在此处输入图像描述

我发现这个链接似乎表明需要子类化NSTableView和实现
- (void)drawBackgroundInClipRect:(NSRect)clipRect,对此有什么建议吗?

来源:主题化 NSTableView

4

2 回答 2

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

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

于 2013-11-02T18:32:12.040 回答
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
}
于 2013-10-30T10:47:19.920 回答