【问题标题】:NSPopupButton that displays image not text of selected itemNSPopupButton 显示图像而不是所选项目的文本
【发布时间】:2017-07-28 17:02:34
【问题描述】:

我正在创建一个 NSPopUpButton,它有多个 NSMenuItem,每个都有一个图像和一个标题。我试图创建的功能是这样的:当弹出窗口显示时,我希望它正常运行,显示标题和图像,但是当弹出窗口关闭时,我希望按钮仅显示所选项目的图像.很像 Calendars Mac 应用的行为方式。

任何帮助将不胜感激。

【问题讨论】:

  • 到目前为止你尝试过什么?你的代码是什么样的?
  • NSPopUpButtonNSButton 的子类。您是否尝试在选择项目时设置标题和图像?

标签: swift macos cocoa nspopupbutton


【解决方案1】:

您所要做的就是设置popupButton.imagePosition = .imageOnly。这是一个例子:

func swatch(size: NSSize, color: NSColor) -> NSImage {
    let image = NSImage(size: size)
    image.lockFocus()
    color.drawSwatch(in: NSMakeRect(0, 0, size.width, size.height))
    image.unlockFocus()

    return image
}

override func viewDidLoad() {
    super.viewDidLoad()

    let homeItem = NSMenuItem(title: "Home", action: nil, keyEquivalent: "")
    let workItem = NSMenuItem(title: "Work", action: nil, keyEquivalent: "")
    let familityItem = NSMenuItem(title: "Family", action: nil, keyEquivalent: "")

    let size = NSSize(width: 12, height: 12)
    homeItem.image = swatch(size: size, color: .blue)
    workItem.image = swatch(size: size, color: .purple)
    familityItem.image = swatch(size: size, color: .orange)

    let menu = NSMenu()
    menu.addItem(homeItem)
    menu.addItem(workItem)
    menu.addItem(familityItem)
    popupButton.menu = menu
    popupButton.imagePosition = .imageOnly
}

【讨论】:

  • 可以在storyboard或者xib中设置图片位置。
  • 工作完美,我知道我错过了一些简单的东西。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-07-09
  • 2012-04-07
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 2013-01-27
  • 2011-09-24
  • 2017-02-19
相关资源
最近更新 更多