微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Cocoa:[statusItem setView:myView]无论如何都会生成一个白条菜单项

在我的Mac OS X小应用程序中,我在系统菜单栏中显示一些信息.我用

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的视图显示菜单项内.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐