6

如何更改 NSMenuItem 的高度?当我更改菜单的字体时,NSMenuItem 会自动调整大小以适合标题,标题上方或下方不留空格。它看起来非常拥挤。

看起来像这样:

在此处输入图像描述

希望它看起来像这样:

在此处输入图像描述

我已经尝试了一百万次与菜单项的属性标题相关的调整,但无济于事。我也不想使用菜单项的视图属性,因为我想保持突出显示。还有其他想法吗?

编辑:这是我想要的(或多或少),但基于 NSMenu,而不是从头开始重做。

在此处输入图像描述

4

4 回答 4

8

您可以设置具有所需高度的 1 像素宽的空图像:

NSImage *image=[[NSImage alloc]initWithSize:NSMakeSize(1,30)];

[menuItem setImage:image];

显然,您最终会得到向右偏移 1 个像素的标题,但如果统一应用,这可能是可以接受的。

于 2013-08-03T14:56:41.360 回答
0
// you want height 100    
[menuItem setView:[[NSView alloc] initWithFrame:NSMakeRect(0, 0, 0, 100)]];
于 2014-11-21T03:36:42.380 回答
0

一个选项是使用 NSAttributedString 如下:

let font = NSFont.systemFont(ofSize: NSFont.systemFontSize)
let fontLineHeight = (font.ascender + abs(font.descender))
let lineHeight: CGFloat = fontLineHeight * 1.4
let style = NSMutableParagraphStyle()
style.minimumLineHeight = lineHeight
style.maximumLineHeight = lineHeight
let baselineOffset = (lineHeight - fontLineHeight) / 2
let item = NSMenuItem()
item.attributedTitle = NSAttributedString(string: title,
                                          attributes: [
                                            .paragraphStyle: style,
                                            .baselineOffset: baselineOffset
                                          ])
于 2021-09-10T02:42:40.843 回答
-1

NSMenu如果您正在寻找基于而不是 Carbon 方面的重新实现,NSWindow请查看JGMenuWindow

https://github.com/SquaredTiki/JGMenuWindow

于 2013-08-18T15:57:27.923 回答