NSSegmentedControl颜色
我想有一个NSSegmentedControl的子类,其中不同的段是不同的颜色。 我试过继承NSSegmentedControl并添加下面的代码:
- (void)drawRect:(NSRect)dirtyRect
{
NSColor *color = [NSColor redColor];
[color setFill];
NSRectFill(dirtyRect);
[super drawRect:dirtyRect];
}
除此之外,它看起来很接近1.它将整个分段控件着色为相同的颜色,在这种情况下为红色,2.在边缘上有一点颜色流血。
我也尝试了继承NSSegmentedCell并添加了这个:
- (void)drawSegment:(NSInteger)segment inFrame:(NSRect)frame withView:(NSView *)controlView
{
NSColor *color;
switch (segment) {
case 0:
color = [NSColor redColor];
break;
case 1:
color = [NSColor blueColor];
break;
case 2:
color = [NSColor greenColor];
break;
case 3:
color = [NSColor orangeColor];
break;
default:
break;
}
[color setFill];
NSRectFill(frame);
[super drawSegment:segment inFrame:frame withView:controlView];
}
这是更好的,因为各个部分都显示独特的颜色,但我很难认为这是可以接受的。 我希望整个片段都用该片段的适当颜色填充,如果它具有第一个屏幕截图中的渐变和着色,那将会很好。
请让我知道我能做到这一点。
谢谢。
您需要为段指定固定宽度。
然后你的代码将工作得很好(屏幕截图来自我的测试项目)
并且不要忘记禁用色彩
[self.segment.cell setControlTint:NSClearControlTint ];
链接地址: http://www.djcxy.com/p/58665.html