gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:13:24 24 4
gpt4 key购买 nike

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

statusItem = [
[[NSStatusBar systemStatusBar]
statusItemWithLength:NSVariableStatusItemLength]
retain
];

它工作得很好,我可以用它来更改文本

[statusItem setTitle:[NSString stringWithString:@"Woo-hoo"]];

但它使用默认的菜单字体,对于我相对不重要的信息来说太大了。所以我决定用自定义 View 重新实现它。我在 Interface Builder 中创建了一个 View 。

但是不幸的是,当我将其设置为菜单项的 View 时

[statusItem setView:myView];

它只是在菜单中显示一个白色条,而不是我的东西。我尝试过

[statusItem 
drawStatusBarBackgroundInRect:[myView frame]
withHighlight:NO];

没有成功。

在试图弄清楚问题是否出在 View 本身或我将其分配给菜单栏的方式时,我创建了一个窗口并执行了

[myTestWindow setContentView:myView];

这个工作顺利进行。这让我觉得我的观点是好的:-)

那么,我还可以尝试什么让菜单项显示我自己的 View ?

谢谢!

最佳答案

这恰好是 Interface Builder 中窗口 View 自动调整大小设置的一些奇怪的副作用(我们称之为尺寸效应)。在检查器中,您可以设置如何根据 super View 大小调整 subview 的大小。因此,在我的情况下,它在某种程度上被破坏了,这样当窗口变得足够小(menuitem-high)时,我的元素就被绘制在窗口框架之外。

我在 IB 中重新配置了大小调整,消除了所有不需要的自动设置,现在它工作得很好:IB 中的 View 显示在菜单项内。

关于Cocoa: [statusItem setView:myView] 无论如何都会创建一个白条菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/689513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com