【问题标题】:How to make `NSPopUpButton` with `NSControl.ControlSize.mini` programmatically?如何以编程方式使用`NSControl.ControlSize.mini`制作`NSPopUpButton`?
【发布时间】:2020-01-27 00:44:56
【问题描述】:
  • 我尝试设置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而只有代码的情况下正确制作一个迷你尺寸的弹出按钮?

【问题讨论】:

    标签: appkit nspopupbutton


    【解决方案1】:

    只需为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)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      相关资源
      最近更新 更多