NSView с градиентной заливкой?

. Я пытаюсь заполнить NSView градиентом. когда окно находится в фоновом режиме, градиент должен иметь более светлые цвета, чтобы соответствовать остальной части окна. В приведенном ниже коде много артефактов :Когда окно отрисовывается впервые, оно отрисовывается с фоновыми цветами. При изменении размера окна используются цвета переднего плана. Когда окно перемещается назад, цвета фона не используются должным образом. Не следует ли мне использовать isKeyWindow для этой задачи?

- (void)drawRect:(NSRect)dirtyRect {

    if ([[self window] isKeyWindow]) {

        NSColor *startingColor = [NSColor colorWithCalibratedWhite:0.8 alpha:1.0];
        NSColor *endingColor = [NSColor colorWithCalibratedWhite:0.6 alpha:1.0];
        NSGradient* aGradient = [[NSGradient alloc]
                             initWithStartingColor:startingColor
                             endingColor:endingColor];
        [aGradient drawInRect:[self bounds] angle:270];

    } else {
        NSColor *startingColor = [NSColor colorWithCalibratedWhite:0.9 alpha:1.0];
        NSColor *endingColor = [NSColor colorWithCalibratedWhite:0.8 alpha:1.0];
        NSGradient* aGradient = [[NSGradient alloc]
                             initWithStartingColor:startingColor
                             endingColor:endingColor];
        [aGradient drawInRect:[self bounds] angle:270];
    }
    [super drawRect:dirtyRect];
}
6
задан Mike T 13 August 2012 в 06:42
поделиться