如何放置在 NSMenu 的水平滑块 ( Swift 3,Xcode 8)

标签: Xcode Swift
发布时间: 2016/12/26 23:49:37
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

截至 macOS 塞拉利昂卷菜单栏提供项水平滑块来更改系统音量︰

macOS Sierra volume menu

我想要采用这个概念,我自己的申请和出了下面的类︰

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!
    let statusItem = NSStatusBar.system().statusItem(withLength: -2)

    func applicationDidFinishLaunching(_ aNotification: Notification) {

        let menu = NSMenu()
        let menuItem = NSMenuItem()
        let statusSlider = NSSlider()

        menu.addItem(NSMenuItem(title: "Slider:", action: nil, keyEquivalent: ""))

        menuItem.title = "Slider 1"
        menuItem.view = statusSlider
        menu.addItem(menuItem)

        menu.addItem(NSMenuItem.separator())

        menu.addItem(NSMenuItem(title: "Quit", action: Selector("terminate:"), keyEquivalent: "q"))

        statusItem.image = NSImage(named: "NSStatusAvailable")
        statusItem.menu = menu
    }
}

但那里是没有显示在菜单中的滑块。有谁知道做错了什么吗?

enter image description here

解决方法 1:

NSSlider 的初始帧大小为零。您需要将它添加到菜单项之前设置大小。

statusSlider.setFrameSize(NSSize(width: 160, height: 16))
官方微信
官方QQ群
31647020