У меня проблема с NSSegmentedControl.
У меня есть пользовательский вид, где я рисую градиент с тенью.
С чертежом все в порядке, но когда я помещаю в него NSSegmentedControl, то происходит что-то странное - фон пользовательского представления просвечивает сегментированный элемент управления, как будто сегментный элемент управления имеет низкое альфа-значение.
Вот фотографии, которые демонстрируют проблему:
С пользовательским представлением в фоновом режиме:
Без пользовательского представления в фоновом режиме:
Как вы можете видеть в левом верхнем углу первого изображения, сегментированный элемент управления не отрисовывается должным образом.
Вот метод drawRect из пользовательского представления:
- (void)drawRect:(NSRect)dirtyRect {
NSShadow *shadow = [[NSShadow alloc] init];
[shadow setShadowOffset:NSMakeSize(0.0, -6.0)];
[shadow setShadowBlurRadius:3.0];
[shadow setShadowColor:[[NSColor blackColor] colorWithAlphaComponent:0.3]];
[shadow set];
NSGradient *gradient = [[NSGradient alloc] initWithColorsAndLocations:[NSColor colorWithDeviceWhite:0.8 alpha:1.0],(CGFloat)0.0,[NSColor colorWithDeviceWhite:0.65 alpha:1.0],(CGFloat)0.5,[NSColor colorWithDeviceWhite:0.3 alpha:1.0],(CGFloat)0.5,[NSColor colorWithDeviceWhite:0.5 alpha:1.0],(CGFloat)1.0, nil];
[gradient drawInRect:self.bounds angle:90];
NSBezierPath *bezierPath = [NSBezierPath bezierPath];
[bezierPath moveToPoint:NSMakePoint(0, 0)];
[bezierPath lineToPoint:NSMakePoint(-self.bounds.size.height, 0)];
[bezierPath lineToPoint:NSMakePoint(-self.bounds.size.height, -self.bounds.size.width)];
[bezierPath lineToPoint:NSMakePoint(0, -self.bounds.size.width)];
[[NSColor whiteColor] set];
[bezierPath stroke];
}
Можете ли вы помочь мне с этим?
Я не знаю, как решить эту проблему.