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;
}
// IMplementation
- (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,它帮助了我,输出是Background图像,实现透明并显示Parent视图背景,但是涂上了白色,看起来,它因为得到白色而因为列或单元格, 我试图告诉Cell of Column不要画Backgorund但是它不起作用, 任何人都可以建议我的任何其他方法。
答案 0 :(得分:0)
它的工作,我也覆盖了drawBackgroundInClipRect,但在评论了这个方法后,我可以看到预期的输出,
现在我可以看到,透明背景上会显示表格单元格数据。