2011-12-22 18 views
5

Sto cercando un modo per disegnare un effetto di dissolvenza su una vista tabella (e vista struttura, ma penso che sarà lo stesso) quando il contenuto viene fatto scorrere. Ecco un esempio dalla Fantastical app:Effetto dissolvenza nella parte superiore e inferiore di NSTableView/NSOutlineView

fade effect on top

anche un video di una dissolvenza simile su QuickLook finestre here.


per rendere questo ho cercato sottoclasse della ScrollView di un Tableview con questo codice:

#define kFadeEffectHeight 15 

@implementation FadingScrollView 

- (void)drawRect: (NSRect)dirtyRect 
{ 
    [super drawRect: dirtyRect]; 

    NSGradient* g = [[NSGradient alloc] initWithStartingColor: [NSColor blackColor] endingColor: [NSColor clearColor]]; 

    NSRect topRect = self.bounds; 
    topRect.origin.y = self.bounds.size.height - kFadeEffectHeight; 
    topRect.size.height = kFadeEffectHeight; 

    NSRect botRect = self.bounds; 
    botRect.size.height = kFadeEffectHeight; 

    [NSGraphicsContext saveGraphicsState]; 
    [[NSGraphicsContext currentContext] setCompositingOperation: NSCompositeDestinationAtop]; 
    // Tried every compositing operation and none worked. Please specify wich one I should use if you do it this way 

    [g drawInRect: topRect angle: 90]; 
    [g drawInRect: botRect angle: 270]; 

    [NSGraphicsContext restoreGraphicsState]; 
} 

... ma questo non svanì nulla, probabilmente perché questo viene chiamato prima la vista reale tavolo è disegnato. Non ho idea di come fare questo :(

Tra l'altro, sia la Tableview e outlineview voglio avere questo effetto sono a base di vista, e l'applicazione è solo 10,7.

+0

è possibile fornire un video l'effetto o il link iTunes dell'app che si ispirano a? – viggio24

+0

@ viggio24 aggiunto il link a Fantastical sull'app store e un video di un altro esempio – Alex

risposta

7

In Mac OS X (come la tua domanda è taggata), ci sono diversi trucchi che rendono questo difficile.Questo è particolarmente vero su Lion con scrolling elastico

Ho (solo oggi) messo insieme quello che penso sia un approccio migliore di lavorare su la tabella o le viste di struttura direttamente: una sottoclasse NSScrollView personalizzata, che mantiene due "viste di dissolvenza" affiancate nella posizione corretta in cima alla sua vista Clip. JLNFadingScrollView può essere configurato con l'altezza e il colore della dissolvenza desiderati ed è libero/open source su Github. Si prega di rispettare la licenza e godere. :-)

Examples of JLNFadingScrollView

Problemi correlati