2016-10-06 1 views
1

Au macOS Sierra l'élément de la barre de menu de volume fournit un élément de curseur horizontal pour modifier le volume du système:Comment placer curseur horizontal dans NSMenu (Swift 3, Xcode 8)

macOS Sierra volume menu

Je voudrais d'adopter ce concept pour ma propre application et est venu avec la classe suivante:

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

Mais il n'y a pas curseur apparaître dans le menu. Quelqu'un at-il une idée de ce que j'ai fait de mal?

enter image description here

Répondre

5

La taille de trame initiale de NSSlider est égal à zéro. Vous devez définir la taille avant de l'ajouter à un élément de menu.

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

Merci beaucoup :) – Zahlex

+0

j'ai enfin pu obtenir un NSColorWell dans mon menu après avoir spécifié une taille d'image. – samael