NstableView Transparent TableView
-
12-10-2019 - |
Вопрос
Требование пользовательского интерфейса: 1 - необходимо отобразить таблицу с двумя столбцами, первая Col должна отобразить изображение, а 2 -й Col будет иметь немного текста с ним, 2 - оно должно быть прозрачным, поэтому он должен отображать фон NSView,
Мой код написан, как ниже,
I Subclass 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, то есть белый фон нарисуется, затем я попробовал, реализуя фон в TableVie Изображение, чтобы достичь прозрачного и показать родительский фон вида, но, похоже, нарисованный белым цветом, он получает белый цвет, нарисованный из -за колонки или ячейки, я попытался сказать Cell о столбце не рисовать Backgorund, но он не сработал,, Любой другой метод может предложить мне любой парни.
Решение
Это работало, я также переопределял Delepbackgroundincliprect, но после просьба этот метод я мог увидеть ожидаемый результат,
Теперь я вижу, прозрачный фон с отображаемыми данными таблиц ячейки.