NSTableView 透明TableView
Posted
技术标签:
【中文标题】NSTableView 透明TableView【英文标题】:NSTableView transparent TableView 【发布时间】:2011-01-18 07:00:52 【问题描述】:UI 要求是, 1 -- 需要显示一个两列的表格,第一个列应该显示一个图像,第二个列将有一些文本, 2 -- 它应该是透明的,所以它应该显示 NSView 背景,
我的代码是这样写的,
我继承了 NSTableView 覆盖以下方法
-(void)awakeFromNib
[[self enclosingScrollView] setDrawsBackground: NO];
[[self enclosingScrollView] setBorderType:NSNoBorder];
- (BOOL)isOpaque
return NO;
- (void)drawRect:(NSRect)drawRect
[super drawRect: drawRect];
在我看来,创建表实例如下
@interface MyView : CommUICustomView
CustomTableView *myTableView;
// 实现
- (void)InitContactTable
NSRect scrollFrame = [self bounds];
NSScrollView* scrollView = [[[NSScrollView alloc] initWithFrame:scrollFrame] autorelease];
[scrollView setBorderType:NSNoBorder];
[scrollView setHasVerticalScroller:YES];
[scrollView setHasHorizontalScroller:NO];
[scrollView setAutohidesScrollers:YES];
[scrollView setDrawsBackground: NO];
NSRect clipViewBounds = [[scrollView contentView] bounds];
pOnLineCTView = [[[CommUITableView alloc] initWithFrame:clipViewBounds] autorelease];
//[pOnLineCTView setBackGroundImageByName:@"largegears.png"];
NSTableColumn* firstColumn = [[[NSTableColumn alloc] initWithIdentifier:@"firstColumn"] autorelease];
[[firstColumn dataCell] setDrawsBackground:NO];
[myTableView addTableColumn:firstColumn];
NSTableColumn* secondColumn = [[[NSTableColumn alloc] initWithIdentifier:@"secondColumn"] autorelease];
[[secondColumn dataCell] setDrawsBackground:NO];
[myTableView addTableColumn:secondColumn];
[myTableView setDataSource:self];
[scrollView setDocumentView:pOnLineCTView];
[scrollView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
[self addSubview:scrollView];
[self setAutoresizesSubviews:YES];
上面代码的输出是,白色背景的表格,即使我设置 NoofRow 为 0,即绘制白色背景, 接下来我尝试通过覆盖CustomTableView的drawRect方法在TableView中实现Background,它帮助了我,并且输出是背景图像,以实现透明并显示父视图背景,但是用白色绘制,似乎它被绘制为白色,因为列或单元格, 我试图告诉 Cell of Column 不要画 Backgorund,但它没有用, 任何人都可以建议我的任何其他方法。
【问题讨论】:
你不应该覆盖 draxRect: 如果你不覆盖它的实现。事实上,你不应该覆盖任何你没有覆盖的方法。它只是添加了不必要的代码。 ;-) 【参考方案1】:它的工作,我也覆盖了drawBackgroundInClipRect,但是在评论这个方法之后,我可以看到预期的输出,
现在我可以看到透明背景,上面显示了表格单元格数据。
【讨论】:
以上是关于NSTableView 透明TableView的主要内容,如果未能解决你的问题,请参考以下文章