【问题标题】:Custom NSMenuItem with right-aligned detail text label具有右对齐详细文本标签的自定义 NSMenuItem
【发布时间】:2020-02-14 11:29:29
【问题描述】:

我想实现什么

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

  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】:

    没关系,我自己找到了答案。实际上,它现在对我有用,方法是使用 NSMenuItemview 属性设置自定义视图。这个答案引导我走向正确的方向:Highlighting a NSMenuItem with a custom view?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 2016-04-30
      • 2015-07-06
      • 2012-06-16
      • 2012-02-24
      • 1970-01-01
      相关资源
      最近更新 更多