我想为状态栏项目创建一个菜单,例如Tapbot的PastebotSync应用程序中看到的菜单:
有没有人有任何想法如何实现菜单顶部与顶部齐平的自定义区域?
我已经尝试/想到了一些可能的方法:
带视图的标准NSMenuItem-与菜单顶部不齐平
一些hack-ish的代码将NSWindow放置在菜单顶部的区域上-不好,因为它在关闭时不会随菜单淡出
完全放弃NSMenu并改用NSView-还没有尝试过,但是我真的不想做一些假按钮或充当NSMenuItems的东西
任何人有更好的想法或建议吗?
谢谢!
最佳答案
万一有人来找我,我在Gap above NSMenuItem custom view上发布了解决方案
这是代码:
@interface FullMenuItemView : NSView
@end
@implementation FullMenuItemView
- (void) drawRect:(NSRect)dirtyRect
{
NSRect fullBounds = [self bounds];
fullBounds.size.height += 4;
[[NSBezierPath bezierPathWithRect:fullBounds] setClip];
// Then do your drawing, for example...
[[NSColor blueColor] set];
NSRectFill( fullBounds );
}
@end
像这样使用它:
CGFloat menuItemHeight = 32;
NSRect viewRect = NSMakeRect(0, 0, /* width autoresizes */ 1, menuItemHeight);
NSView *menuItemView = [[[FullMenuItemView alloc] initWithFrame:viewRect] autorelease];
menuItemView.autoresizingMask = NSViewWidthSizable;
yourMenuItem.view = menuItemView;
关于cocoa - 对状态栏项的NSMenu进行反向工程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4064386/