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

上一篇: NSSegmentedControl Colors

下一篇: User defined functions with LessCSS?