我正在尝试创建一个具有 50% 不透明黑色背景和白色文本的自定义 NSButton。为此,我对 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()
的默认操作是复制,这不是您想要的。替换为
NSRectFillUsingOperation(dirtyRect, NSCompositeSourceAtop);
关于objective-c - 具有半透明背景的自定义 NSButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8663003/