如何通过NSControl.ControlSize.mini`以编程方式制作`NSPopUpButton`?

问题描述 投票:0回答:1
  • 我尝试设置controlSize,但没有用。
  • 我尝试设置NSMenuItem.attributedTitle,但没有成功。设置NSMenuItem.attributedTitle可使文本变小,但不会使选中标记变小。因此结果看起来很糟糕。

code-made-popup

这里是要复制的代码。

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且只有代码的情况下正确制作一个小型弹出按钮?

appkit nspopupbutton
1个回答
0
投票

只需将小号字体分配给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)

这同样适用于任何其他基于控件的类。您需要同时设置controlSizefont。似乎controlSize仅控制图形外观部分,font控制文本渲染。

© www.soinside.com 2019 - 2024. All rights reserved.