NSTableView прозрачный TableView - PullRequest
1 голос
/ 18 января 2011

Требование к пользовательскому интерфейсу: 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, т. Е. Белый фон рисуется, затем я попытался реализовать фон в TableView, переопределив drawRectМетод CustomTableView, мне помог, и выводом является Фоновое изображение, чтобы добиться прозрачности и показать фон Родительского представления, но окрашенный в белый цвет, кажется, его становится белым цветом, нарисованным из-за столбца или ячейки, я пытался сказать Cell оКолонка не рисовать Backgorund, но это не сработало. Любой другой метод, который мне могут предложить любые парни.

1 Ответ

0 голосов
/ 18 января 2011

Это работает, я также переопределял drawBackgroundInClipRect, но после того, как прокомментировал этот метод, я смог увидеть ожидаемый результат,

Теперь я вижу прозрачный фон с отображаемыми на нем данными ячейки таблицы.

...