如何更改 NSMenuItem 的高度?当我更改菜单的字体时,NSMenuItem 会自动调整大小以适合标题,标题上方或下方不留空格。它看起来非常拥挤。
看起来像这样:
希望它看起来像这样:
我已经尝试了一百万次与菜单项的属性标题相关的调整,但无济于事。我也不想使用菜单项的视图属性,因为我想保持突出显示。还有其他想法吗?
编辑:这是我想要的(或多或少),但基于 NSMenu,而不是从头开始重做。
如何更改 NSMenuItem 的高度?当我更改菜单的字体时,NSMenuItem 会自动调整大小以适合标题,标题上方或下方不留空格。它看起来非常拥挤。
看起来像这样:
希望它看起来像这样:
我已经尝试了一百万次与菜单项的属性标题相关的调整,但无济于事。我也不想使用菜单项的视图属性,因为我想保持突出显示。还有其他想法吗?
编辑:这是我想要的(或多或少),但基于 NSMenu,而不是从头开始重做。
您可以设置具有所需高度的 1 像素宽的空图像:
NSImage *image=[[NSImage alloc]initWithSize:NSMakeSize(1,30)];
[menuItem setImage:image];
显然,您最终会得到向右偏移 1 个像素的标题,但如果统一应用,这可能是可以接受的。
// you want height 100
[menuItem setView:[[NSView alloc] initWithFrame:NSMakeRect(0, 0, 0, 100)]];
一个选项是使用 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
])
NSMenu
如果您正在寻找基于而不是 Carbon 方面的重新实现,NSWindow
请查看JGMenuWindow
: