自定义视图只是一个具有NSTextFIEld“标签”的NSVIEw背景。
问题在于,当添加到菜单中时,NSVIEw的背景优势优美的活力/透明度。 NSTextfIEld标签不是。
通过使用NSRectFillUsingOperation,我已经得到了在优胜美地的一些背景颜色看起来很好。但其他人仍然不符合。当它工作时,手动“突出显示”视图后,原始颜色会改变,不再匹配。如果需要,我可以挖一些示例代码。
那么当它在优胜美地看起来有些好的时候,在10.9小牛看来可怕。
我还尝试将wantsLayer属性设置为YES,将视图转换为CALayer支持的视图。这会产生其他问题,例如文本不会在清晰的背景下正确反锯齿。
我的问题:
如何在NSMenuItem自定义视图之上显示标签?标签的背景必须与视图的背景完全匹配。解决方案必须在优胜美地和小牛队工作。
示例代码如下:
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] initWithFrame:NSMakeRect(0,200,50)];[vIEw addSubvIEw:label];NSMenuItem *vIEwMenuItem = [[NSMenuItem alloc] init];[vIEwMenuItem setVIEw:vIEw];[menu addItem:vIEwMenuItem];self.statusItem.menu = menu;
我将NSVIEw子类化以覆盖drawRect:并绘制一个彩色背景:
- (voID)drawRect:(NSRect)dirtyRect { [super drawRect:dirtyRect]; [[NScolor bluecolor] setFill]; NSRectFill(dirtyRect); //NSRectFillUsingOperation(dirtyRect,NSCompositeSourceOver);}解决方法 这肯定是一个黑客,但它对我有用。 尝试将NSImageVIEw添加到您的自定义视图中。图像视图必须占据整个视图。 总结
以上是内存溢出为你收集整理的osx – 匹配含有自定义视图的优胜美地NSMenuItem的充满活力的背景全部内容,希望文章能够帮你解决osx – 匹配含有自定义视图的优胜美地NSMenuItem的充满活力的背景所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)