objective-c - NSTableView 透明TableView

标签 objective-c cocoa nstableview nstableviewcell

用户界面要求是, 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中实现背景,它帮助了我,输出是背景图像,实现透明并显示父 View 背景,但是用白色绘制,看起来,它被绘制为白色,因为列或单元格的, 我试图告诉单元格不要绘制背景,但它不起作用, 任何其他方法任何人都可以建议我。

最佳答案

它的工作原理,我也重写了drawBackgroundInClipRect,但是在评论这个方法之后,我可以看到预期的输出,

现在我可以看到透明背景,上面显示表格单元格数据。

关于objective-c - NSTableView 透明TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4721311/

相关文章:

ios - 指向整数转换的不兼容指针将 'id' 发送到类型为 'int' 的参数

objective-c - Cocoa 中的绘图选择框(橡皮筋、行进的 Ant ),Objective C

ios - 自定义表格 View 单元格中特定元素的手势

swift - 苹果系统。用管理员权限替换共享文件夹中的应用程序

macos - NSCollectionView 完成放置事件

objective-c - 每行着色 NSTableView 文本

objective-c - UITableView 上的 sendSubviewToBack 在 iOS 11 中无法正常工作

cocoa - 在用户默认设置中存储语音 - Cocoa

string - int 到 string 的高效转换

cocoa - NSTableCellView ImageView 为空