nstableView透明tableview
-
12-10-2019 - |
题
UI要求是,1-需要显示两个列表,首先要显示图像,第二col将带有一些文本,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,即绘制白色背景,下一步我尝试了,通过覆盖的drawrect方法在表格中实现了codistableview的绘制方法,它帮助了我,输出是背景。图像,为了获得透明和显示父景观背景,但用白色绘制,似乎是由于列或单元格而绘制的白色,我试图告诉列的单元格不绘制backgorund,但它不起作用,任何其他人都可以建议我的任何其他方法。
解决方案
它的工作原理,我也覆盖了缺点inclipRect,但是在评论了这种方法之后,我可以看到预期的输出,
现在,我可以看到,在其上显示带有表单元数据的透明背景。
不隶属于 StackOverflow