objective-c - 具有半透明背景的自定义 NSButton

标签 objective-c xcode macos nsbutton

我正在尝试创建一个具有 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/

相关文章:

ios - Open Graph map 布局

macos - 使 NSTableCellView 可编辑

python - 如何在python中打开mac osx上的文件

c - Obj-C 方法 : calling with parameters

ios - 在iOS设备中安装应用程序后如何一次显示警报

javascript 枚举自动递增?

ios - 带有分钟和秒的日期选择器

iPhone UIImagePickerController 视频播放器获取选定的视频位置

ios - SwiftUI 中的后缘和前缘是什么意思?

cocoa - 幻灯片和标签更新