带有图像和文本的NSMenuItem

and*_*kle 2 user-interface cocoa objective-c drop-down-menu

我有一个关于NSMenuItems的问题.

我想要做的是使用本机osx组件复制java GUI,因此我使用的语言是Cocoa.我想要做的是让每个菜单项都有一个图像,然后在它旁边,一些文本.

我已经对它进行了一些研究,我的第一个调用端口(一如既往看起来大声笑)是苹果文档,它有一个方便的例子,说明了如何在menuitems中嵌入视图:

https://developer.apple.com/library/mac/#samplecode/MenuItemView/Listings/MyWindowController_m.html#//apple_ref/doc/uid/DTS10004136-MyWindowController_m-DontLinkElementID_8

作为一个相对较新的可可,我以为我必须覆盖NSMenuItem中的一个绘图方法.虽然不太确定.我正在玩弄的另一个想法是创建一个包含图像和一些文本的自定义视图.

任何其他想法/验证或讨论将是最受欢迎的.

谢谢大家!

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

and*_*kle 9

好的,所以我现在有了旁边有图标的菜单项.对于任何对此感兴趣的人来说(我没有对它做任何泄漏分析).

首先,将所需的所有图像放入"Resources"文件夹(这就是xcode 3.1.4中所称的内容).

现在,例如,在我们拥有所有图像之后,我们想要使用名为"eraser.png"和"eraser_on.png"的图像,并且我想将它们附加到第3个菜单项.为了实现这一目标,我们执行以下操作:

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

NSMenuItem *item = [ nameOfPopUpButton itemAtIndex:2];
Run Code Online (Sandbox Code Playgroud)

下面的代码将菜单项的图像设置为"eraser.png"

[ item setImage: [ NSImage imageNamed:@"eraser"] ];
Run Code Online (Sandbox Code Playgroud)

那就是你设置菜单项的图像(它将在文本的左侧,即文本之前).

如果你想要不同状态的不同图像,例如当用户按下它时,使用这种方法(不是我自己测试但它的声音合理:D和功能直接api)

[item setOnStateImage: [ NSImage imageNamed:@"eraser_on" ] ]
Run Code Online (Sandbox Code Playgroud)

但是你可以将它设置为零或根本不设置它,它将成为默认颜色

希望这有助于某人.

从以下网址拼凑而成:https: //developer.apple.com/library/mac/#samplecode/MenuMadness/Listings/Controller_m.html#//apple_ref/doc/uid/DTS40008870-Controller_m-DontLinkElementID_4

谢谢 :)