NSTableView TableView trasparente
-
12-10-2019 - |
Domanda
UI requisito è, 1 - Necessità di mostrare una tabella a due colonne, prima col dovrebbe visualizzare un'immagine e 2 ° col avrà un testo con esso, 2 - dovrebbe essere trasparente, così si dovrebbe visualizzare lo sfondo NSView,
Il mio codice è scritto come sotto,
I sottoclasse NSTableView sovrascrivendo seguenti metodi
-(void)awakeFromNib
{
[[self enclosingScrollView] setDrawsBackground: NO];
[[self enclosingScrollView] setBorderType:NSNoBorder];
}
- (BOOL)isOpaque {
return NO;
}
- (void)drawRect:(NSRect)drawRect
{
[super drawRect: drawRect];
}
A mio parere la creazione di un'istanza tabella come di seguito
@interface MyView : CommUICustomView {
CustomTableView *myTableView;
}
// implementazione
- (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];
}
L'output del codice è sopra, Tavolo con sfondo bianco, anche se ho impostato sono NoofRow 0, vale a dire Sfondo bianco è sempre disegnato, Poi ho provato, l'implementazione Sfondo a Tableview ridefinendo il metodo drawRect di CustomTableView, mi ha aiutato, e l'uscita è l'immagine di sfondo, per raggiungere vista sfondo trasparente e spettacolo Parent, ma dipinto con il colore bianco, a quanto pare, il suo colore bianco sempre disegnato perché di Colonna o cellulare, Ho cercato di raccontare cellulare della Colonna di non attirare Backgorund, ma non ha funzionato, Qualsiasi altro metodo qualsiasi ragazzi mi può suggerire.
Soluzione
Il suo funzionamento, mi è stato Overriding drawBackgroundInClipRect anche, ma dopo ha commentato questo metodo, ho potuto vedere i risultati attesi,
Ora posso vedere, sfondo trasparente con i dati delle celle della tabella di essere visualizzazione su di esso.