Эффект затухания вверху и внизу NSTableView / NSOutlineView

Я ищу способ нарисовать эффект затухания в представлении таблицы (и представлении контура, но я думаю, что он будет таким же), когда контент прокручивается. Вот пример из приложения Fantastical :

fade effect on top

Также видео с аналогичным затуханием в окнах QuickLook здесь .


Чтобы сделать это, я попытался создать подкласс для scrollview табличного представления с помощью этого кода:

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

... но это ничего не привело к исчезновению, вероятно, потому, что это вызывается до того, как отрисовывается фактическое табличное представление. Я понятия не имею, как это сделать: (

Между прочим, и табличное, и контурное представление, которое я хочу получить, основаны на представлении, а приложение - только 10.7.

5
задан Alex 22 December 2011 в 13:31
поделиться