Как сделать `NSPopUpButton` с помощью` NSControl.ControlSize.mini` программно? - PullRequest
0 голосов
/ 27 января 2020
  • Я попытался установить 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 и только кода?

1 Ответ

0 голосов
/ 27 января 2020

Просто назначьте мини-шрифт экземпляру 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 контролирует визуализацию текста.

...