自定义带有半透明背景的NSButton



我试图创建一个自定义NSButton与50%不透明的黑色背景和白色文本。为了做到这一点,我子类化了NSButton并重载了DrawRect:

- (void) drawRect:(NSRect)dirtyRect
{
    [self setBordered:NO];
    //REMED since it has same effect as NSRectFill below
    //[[self cell] setBackgroundColor:[NSColor colorWithCalibratedRed:0 green:0 blue:0 alpha:0.2]];
    NSColor* backgroundColor = [NSColor colorWithCalibratedWhite:0 alpha:0.3f];
    [backgroundColor setFill];
    NSRectFill(dirtyRect);
    [super drawRect:dirtyRect];
}

白色文本看起来很好,但按钮的背景总是100%不透明。alpha值不被解释

任何想法?谢谢!

NSRectFill()的默认操作是copy,这不是您想要的。用

代替
NSRectFillUsingOperation(dirtyRect, NSCompositeSourceAtop);

我发现的另一个解决方案是保持我的代码相同,但在界面生成器中为每个按钮打开核心动画层。我不太了解核心动画层,不知道为什么这是有效的。我之前关闭了CAL,因为它让我的字体看起来很锯齿

最新更新