2016-10-06 8 views
1

Ab macOS Sierra das Volumen Menüleiste platzieren einen horizontalen Schieber Artikel stellt auf die Lautstärke des Systems zu ändern:Wie Horizontal Slider in NSMenu (Swift 3, Xcode 8)

macOS Sierra volume menu

Ich mag würde dieses Konzept für meine eigene Anwendung zu übernehmen und kam mit der folgenden Klasse bis:

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 
    } 
} 

Aber es gibt keinen Schieber im Menü zeigt nach oben. Hat jemand eine Ahnung was ich falsch gemacht habe?

enter image description here

Antwort

5

Die Anfangsrahmengröße von NSSlider Null ist. Sie müssen die Größe festlegen, bevor Sie sie einem Menüelement hinzufügen.

statusSlider.setFrameSize(NSSize(width: 160, height: 16)) 
+0

Vielen Dank :) – Zahlex

+0

konnte ich endlich ein NSColorWell in meinem Menü erhalten, nachdem eine Bildgröße angeben. – samael