在我的Mac OS XI小应用程序中显示系统菜单栏中的一些信息.我用
statusItem = [ [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain ];
它工作得很好,我可以改变文本
[statusItem setTitle:[NSString stringWithString:@"Woo-hoo"]];
但它使用的默认菜单字体对于我相对不重要的信息来说太大了.所以我决定用自定义视图重新实现它.我在Interface Builder中创建了一个视图.
不幸的是,当我将它设置为我的菜单项的视图时
[statusItem setView:myView];
它只是在菜单中显示一个白色条而不是我的东西.我试过了
[statusItem drawStatusBarBackgroundInRect:[myView frame] withHighlight:NO];
没有成功.
在试图弄清楚问题是与视图本身有关还是以我将其分配给菜单栏的方式时,我创建了一个窗口并且做了
[myTestWindow setContentView:myView];
这个无缝地工作.这让我觉得我的观点还可以:-)
那么,我还可以尝试使菜单项显示我自己的视图?
谢谢!
碰巧是Interface Builder中窗口视图自动调整设置的一些奇怪的副作用(让我们称它们为大小效果).在Inspector中,您可以设置子视图在超级视图大小调整时的大小调整方式.所以它在我的情况下以某种方式被打破,这样当窗口变得足够小(menuitem-high)时,我的元素就被绘制在窗口的框架之外.
我在IB中重新配置了尺寸,消除了我不需要的所有自动装置,现在它完美地工作:来自IB的视图显示在菜单项内.