2011-12-22 11 views
5

Estoy buscando una forma de dibujar un efecto de desvanecimiento en una vista de tabla (y una vista de esquema, pero creo que será la misma) cuando se desplaza el contenido. Este es un ejemplo de la aplicación Fantastical:Efecto de desvanecimiento en la parte superior e inferior de NSTableView/NSOutlineView

fade effect on top

también un video de un fundido similares en las ventanas de QuickLook here.


para hacer de este Probé la subclasificación de la ScrollView de un tableview con este código:

#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]; 
} 

... pero esto no se desvaneció nada, probablemente debido a esto se le llama antes de que el punto de vista real de mesa es dibujado. No tengo ni idea de cómo hacer esto :(

Por cierto, tanto el tableview y la outlineview quiero tener este efecto basada vista-se, y la aplicación es 10.7 solamente.

+0

puede ofrecerle un video del efecto o el enlace de iTunes de la aplicación que está inspirando en? – viggio24

+0

@ viggio24 agregó el enlace a Fantastical en la tienda de aplicaciones y un video de otro ejemplo – Alex

Respuesta

7

En Mac OS X (como su pregunta está etiquetada), hay varias trampas que lo hacen difícil. Esto es especialmente cierto en Lion con desplazamiento elástico.

He (hoy) reunido lo que creo que es un mejor enfoque que trabajar en la tabla o las vistas de esquema directamente: una subclase NSScrollView personalizada, que mantiene dos "vistas de desvanecimiento" en mosaico en el lugar correcto encima de su vista de clip. JLNFadingScrollView se puede configurar con la altura y el color de desvanecimiento deseados y es de código abierto/libre en Github. Por favor respeta la licencia y disfruta. :-)

Examples of JLNFadingScrollView

Cuestiones relacionadas