objectivec-是否有类似于NSLevelIndicator的带有反向着色的自定义控件



我需要一个类似于NSContinuousCapacityLevelIndicatorStyle中的NSLevelIndicator的控件,但使用反向着色。对于NSLevelIndicator,颜色如下所示:绿色达到警告级别,黄色从警告到临界级别,红色从临界级别开始。这对音量控制来说很好。但我有一个对应于油箱填充的值:绿色表示油箱已满,黄色表示警告,红色表示空。我没有找到任何方法来改变NSLevelIndicator的颜色。

那么,在我开始编写自己的自定义控件之前,是否有NSControl可以满足我的需求(当然,我在询问之前在谷歌上搜索过,但没有结果)?

感谢阅读。

NSLevelIndicator(至少现在是这样)如果您设置的警告级别高于临界级别,会自动为您执行此操作!

子类NSLevelIndicator并编写自己的- (void)drawRect:(NSRect)theRect

#import <Cocoa/Cocoa.h>

@interface PBLevelIndicator : NSLevelIndicator {
    unsigned int mPercent;
}

@end  
#import "PBLevelIndicator.h"

@implementation PBLevelIndicator
- (void)drawRect:(NSRect)theRect
{
    NSRect fillingRect = theRect;
    fillingRect.size.width = theRect.size.width*mPercent/100;   
    NSColor *indicatorColor;
    if( mPercent >= 99 )
    {
        indicatorColor = [NSColor greenColor];
    }
    else if (mPercent >50) 
    {
        indicatorColor = [NSColor yellowColor];
    }
    else
    {
        indicatorColor = [NSColor redColor];
    }
    [indicatorColor set];
    NSRectFill(fillingRect);
}
-(void) setPercentage:(unsigned int) inPercent
{
    mPercent = inPercent;
    [self setNeedsDisplay:YES];
}
@end

相关内容

  • 没有找到相关文章