【发布时间】:2020-02-14 11:29:29
【问题描述】:
我想实现什么
我正在寻找一种在NSMenuItem 中显示标题标签和详细文本标签的方法。
最好看起来像这样:
- 标题标签与所有其他
NSMenuItem左对齐 标题 - 详细文本标签右对齐
- 详细文本标签的文本颜色与标题不同
- 选择/子菜单等按预期工作
我已经尝试过什么
通过阅读文档,我发现了以下可能的实现:
- 创建自定义
NSView并设置NSMenuItem.view - 使用默认的
NSMenuItem并使用NSAttributedString
首先我尝试使用自定义NSView。但是,我无法正确调整 NSMenuItem 的大小以显示所有可用的文本。我猜一些自动调整大小的蒙版不能正常工作,但我不确定。同样这样我需要重新实现子菜单的选择/箭头,...
然后我开始尝试NSAttributedString。我用最多字符计算标题,然后用title += string.padding(toLength: maxTitleLength, withPad: " ", startingAt: 0) 填充字符串。 NSAttributedString 为标题和详细信息标签着色不同。然而,这似乎不起作用,因为尽管标题被填充到相同的长度,但细节标签没有正确对齐。我想这是有道理的,因为字符有不同的宽度?
TL;DR - 问题
那么有没有其他方法可以实现我没有找到的所需设计?你对我如何实现这个有什么建议吗?
【问题讨论】:
标签: ios objective-c swift macos nsmenu