相关疑难解决方法(0)

无法匹配包含自定义视图的Yosemite NSMenuItem的鲜明背景

我正在尝试将自定义视图添加到OS X 10.10 Yosemite菜单栏中的NSMenuItem.

自定义视图只是一个带有NSTextField"label"的NSView背景.

问题是当添加到菜单时,背景NSView被赋予优胜美地式的活力/透明度.NSTextfield标签不是.

背景颜色不匹配

通过使用NSRectFillUsingOperation我已经得到这个在优胜美地的一些背景颜色看起来很好.但其他人继续不匹配.当它工作时,手动"突出显示"视图后,原始颜色会更改,不再匹配.如果需要,我可以为此挖掘一些示例代码.

然后,当它在约塞米蒂看起来有点好的时候,在10.9小牛队中看起来很糟糕.

我也尝试将wantsLayer属性设置为YES以将视图转换为CALayer支持的视图.这会在明确的背景下创建其他问题,例如文本无法正确消除锯齿.

我的问题:

如何在NSMenuItem自定义视图上显示标签?标签的背景必须与视图的背景完全匹配.解决方案必须在Yosemite和Mavericks中运作.

示例代码如下:

self.statusItem = [[NSStatusBar systemStatusBar]
statusItemWithLength:NSVariableStatusItemLength];
[self.statusItem setTitle:@"TEST"];
[self.statusItem setHighlightMode:YES];
[self.statusItem setEnabled:YES];
[self.statusItem setTarget:self];

NSMenu *menu = [[NSMenu alloc] init];
[menu addItemWithTitle:@"Disabled menu item" action:nil keyEquivalent:@""];
[menu addItemWithTitle:@"Enabled menu item" action:@selector(enabled) keyEquivalent:@""];

NSTextField *label = [[NSTextField alloc] initWithFrame:NSMakeRect(30, 20, 50, 20)];
label.stringValue = @"label";
label.editable = NO;
label.bordered = NO;
label.backgroundColor = [NSColor blueColor];
//label.backgroundColor = [NSColor clearColor];


PKMenuItemView *view = [[PKMenuItemView alloc] …
Run Code Online (Sandbox Code Playgroud)

macos cocoa nstextfield osx-mavericks osx-yosemite

25
推荐指数
3
解决办法
2647
查看次数

标签 统计

cocoa ×1

macos ×1

nstextfield ×1

osx-mavericks ×1

osx-yosemite ×1