我如何在NSPopUpButton中改变NSMenuItem的短显示形式



我有一个NSPopUpButton与一个长菜单的项目,其中一些相当宽-比按钮的关闭宽度更宽。有些菜单项的标题是这样的:

"一个很长的名字的开头不是很有趣(重要信息)"

当菜单关闭时,显示为:

"一个很长的名字的开头不是th…"

我希望它显示为:

"开始一个真正的…(重要信息)"

我不能弄清楚NSPopUpButton是如何创建那个省略号的。在NSMenuItem上是否有一个被调用的选择器?NSPopUpButton或NSMenu能处理这个吗?

我需要子类化哪个类以及我需要重写或实现哪个选择器?

许多谢谢。

这种机制称为截断。在Interface Builder中有一个名为换行的选项,它被分组在Control组中。你可能正在寻找的设置叫做Truncate Middle,它将从菜单项的中间开始挑选字母。

但请注意,这并不能完全解决您的问题,因为(important info)部分可能不是"…"之后唯一剩下的部分,而是Name of my Me…tem (important info)。此外,您还可能以重要信息部分被截断而告终。但我认为你可以只要重要的信息是一些数字或几个字母。

也许添加一个图像到菜单项可能更适合你的需要(某种类型的徽章)?也许还有一个属性字符串的选项来强制字母不被截断…但是不确定。

Fabian给了我所需要的线索。谢谢!

[[self cell] setLineBreakMode: NSLineBreakByTruncatingMiddle]

然而,如果有一种方法可以获得更细粒度的控制,那就更好了。是否有更精确地控制截断的方法?

最新更新