. Я пытаюсь заполнить 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];
}