带有右对齐的详细信息文本标签的自定义NSMenuItem

问题描述 投票:0回答:1

我想实现什么

我正在寻找一种在NSMenuItem中显示标题标签和详细文本标签的方法。最好看起来像这样:NSMenuItem Example

  1. 标题标签与所有其他NSMenuItem的对齐标题
  2. 详细文本标签右对齐
  3. 详细文本标签的文本颜色与标题不同
  4. 选择/子菜单等按预期工作

我已经尝试过什么

通过阅读文档,我发现了以下可能的实现:

  1. 创建自定义NSView并设置NSMenuItem.view
  2. 使用默认的NSMenuItem并使用NSAttributedString

首先,我尝试使用自定义NSView。但是,我无法正确显示NSMenuItem的大小以显示所有可用的文本。我猜有些自动调整大小的蒙版无法正常工作,但我不确定。同样,我需要为子菜单重新实现选择/箭头,...

然后我开始尝试NSAttributedString。我计算出的字符最多的标题,然后用title += string.padding(toLength: maxTitleLength, withPad: " ", startingAt: 0)填充字符串。 NSAttributedString为标题和详细标签涂上不同的颜色。但是,这似乎不起作用,因为尽管标题被填充为相同的长度,但细节标签未正确对齐。我想这很有意义,因为字符的宽度不同?


TL; DR-问题

所以还有其他方法可以实现我没有找到的所需设计吗?您对我有什么建议吗?

ios objective-c swift macos nsmenu
1个回答
0
投票

没关系,我自己找到了答案。实际上,现在可以通过使用viewNSMenuItem属性设置自定义视图来为我工作。这个答案将我引向正确的方向:Highlighting a NSMenuItem with a custom view?

© www.soinside.com 2019 - 2024. All rights reserved.