controlSize
,但没有用。NSMenuItem.attributedTitle
,但没有成功。设置NSMenuItem.attributedTitle
可使文本变小,但不会使选中标记变小。因此结果看起来很糟糕。这里是要复制的代码。
let testFont1 = NSFont.menuFont(ofSize: NSFont.systemFontSize(for: .mini))
let menu1 = NSMenu()
menu1.font = testFont1
menu1.addItem(withTitle: "AAA", action: nil, keyEquivalent: "")
let item2 = NSMenuItem()
item2.attributedTitle = NSAttributedString(string: "BBB", attributes: [.font: testFont1])
menu1.addItem(item2)
let popup1 = NSPopUpButton()
popup1.menu = menu1
popup1.controlSize = .mini
popup1.sizeToFit()
window.contentView?.addSubview(popup1)
如何在没有NIB且只有代码的情况下正确制作一个小型弹出按钮?
只需将小号字体分配给NSPopUpButton
实例。
popup1.font = NSFont.systemFont(ofSize: NSFont.systemFontSize(for: .mini))
没有其他必要了。这样的代码可以缩短。
let popup1 = NSPopUpButton()
popup1.controlSize = .mini
popup1.font = NSFont.systemFont(ofSize: NSFont.systemFontSize(for: .mini))
popup1.addItem(withTitle: "AAA")
popup1.addItem(withTitle: "BBB")
popup1.sizeToFit()
window.contentView?.addSubview(popup1)
这同样适用于任何其他基于控件的类。您需要同时设置controlSize
和font
。似乎controlSize
仅控制图形外观部分,font
控制文本渲染。