Objective c 带有图像和文本的NSMenuItem

Objective c 带有图像和文本的NSMenuItem,objective-c,cocoa,user-interface,drop-down-menu,Objective C,Cocoa,User Interface,Drop Down Menu,我有一个关于NSMenuItems的问题 我正在尝试使用本机OSX组件复制JavaGUI,因此我使用的语言是Cocoa。我想做的是让每个菜单项都有一个图像,然后在它旁边有一些文本 我已经对它做了一些研究,我的第一个调用端口(似乎总是lol)是apple docs,它有一个方便的示例,说明了如何在menuitems中嵌入视图: 由于对cocoa比较陌生,我想我必须重写NSMenuItem中的一种绘图方法。不过我不太确定。 我正在玩弄的另一个想法是创建一个自定义视图,其中包含一个图像和一些文本 任

我有一个关于NSMenuItems的问题

我正在尝试使用本机OSX组件复制JavaGUI,因此我使用的语言是Cocoa。我想做的是让每个菜单项都有一个图像,然后在它旁边有一些文本

我已经对它做了一些研究,我的第一个调用端口(似乎总是lol)是apple docs,它有一个方便的示例,说明了如何在menuitems中嵌入视图:

由于对cocoa比较陌生,我想我必须重写NSMenuItem中的一种绘图方法。不过我不太确定。 我正在玩弄的另一个想法是创建一个自定义视图,其中包含一个图像和一些文本

任何其他想法/验证或讨论将不胜感激

谢谢大家


哦,GUI的创建是手工完成的,没有界面生成器。

如果您需要这样做,您可以使用图像和标签子视图创建视图

但是:不要这样做。创建一个“本地”应用程序主要不是关于您选择的语言(这是Objective-C,顺便说一句,不是Cocoa;后者是用Objective-C实现的开发框架的集合)。这是关于顺应平台的

在OSX(和iOS)上,UI设计的一致性可能比任何其他平台都重要。用户知道应用程序什么时候看起来很奇怪,在每个菜单项旁边都有图标(我在Java应用程序中肯定看到过这一点)在OS X上肯定是很奇怪和不自然的。用户最多会感到恼怒,最糟糕的是会感到困惑

因此,我的建议是要么遵循人机界面指导原则(并节省大量工作作为一个好的副作用),要么坚持使用现有的Java应用程序


如果您想提供对常用功能的快速图标访问,建议在OS X上使用工具栏。

好的,现在我有了旁边带有图标的菜单项。对于任何对此感兴趣的人来说,这是(我没有对它做过泄漏分析或任何事情)

首先,把你想要的所有图片放到“资源”文件夹中(这就是xcode 3.1.4中的名称)

现在,例如,在我们有了所有的图像之后,我们想使用名为“橡皮擦.png”和“橡皮擦上.png”的图像,我想把它们附加到第三个菜单项上。为了实现这一目标,我们采取以下措施:

下面的代码将获得菜单中位置3处的菜单项

NSMenuItem *item = [ nameOfPopUpButton itemAtIndex:2];
下面的代码将菜单项的图像设置为“橡皮擦.png”

这就是您为菜单项设置的图像(位于文本左侧,即文本之前)

如果您想要不同状态的不同图像,例如当用户按下它时,请使用此方法(我自己没有测试过,但它听起来很合理:D,函数直接从api中导出)

但是,您可以将其保留为零或根本不设置,它将变为默认颜色

希望这对别人有帮助

从以下方面拼凑而成:


谢谢:)

非常棒的建议!谢谢你的帮助。我想我会提供在菜单中有图标的支持,但默认情况下不会有图标。我们来看看工具栏,看看这是否是一个更好的解决方案。非常感谢:)现在我知道你是如何附加图片的了,我在下面发布了解决方案,但感谢你提供的有用提示!:)
[ item setImage: [ NSImage imageNamed:@"eraser"] ];
[item setOnStateImage: [ NSImage imageNamed:@"eraser_on" ] ]