2016-08-15 32 views
0

我創建了一個NSSlider編程,並在NSMenuItem實現它:添加最小/最大圖像NSSlider使用斯威夫特

let menuVolumeSliderItem = NSMenuItem() 
    let menuVolumeSlider = NSSlider() 

    menuVolumeSlider.sliderType = NSSliderType.linear 
    menuVolumeSlider.isEnabled = true 
    menuVolumeSlider.isContinuous = true 
    menuVolumeSlider.action = #selector(AppDelegate.doSomething) 
    menuVolumeSlider.minValue = 0.0 
    menuVolumeSlider.maxValue = 1.0 
    menuVolumeSlider.floatValue = 0.5 
    menuVolumeSlider.frame.size.width = menu.size.width 
    menuVolumeSlider.frame.size.height = 20.0 

    menuVolumeSliderItem.view = menuVolumeSlider 
    menu.addItem(menuVolumeSliderItem) 

,基本上,它的工作就像一個魅力:

enter image description here

但我想要實現的結果是滑塊的左/右邊緣上的最小/最大圖像,如下所示:

enter image description here

我該如何實現這樣的NSMenuItem?

編輯:

我創建一個自定義的NSView:

let view = NSView() 
    view.frame.size.width = menu.size.width 
    view.frame.size.height = 25.0 

...然後創建一個NSImage中......

let img = NSImageView() 
    img.frame.size.width = 16.0 
    img.frame.size.height = 16.0 
    img.image = NSImage(named: "NSStatusAvailable")! 

...並添加menuVolumeSliderimg我的自定義視圖:

view.addSubview(img) 
    view.addSubview(menuVolumeSlider) 
    menuVolumeSliderItem.view = view 
    menu.addItem(menuVolumeSliderItem) 

...它的工作!但任何人都可以請給我一個提示如何改變subViews的位置?

enter image description here

回答

1

創建的NSView,其中將包括滑塊和兩個圖像。然後將menuVolumeSliderItem.view設置爲NSView。

+0

使用這種方法玩,如果你只添加滑塊到視圖,仍然隱藏會發生什麼?也許更改滑塊寬度以更好地適應視圖?一起玩吧,試着去理解爲什麼它沒有出現,然而,這是你應該採取的方法和方向。 @ixany –

+0

嘿羅伊,謝謝你的幫助,真的很感激!我可以解決這個問題。如果你也可以給我一個提示如何改變子視圖的位置,那將是非常棒的。提前致謝! – ixany

+0

將框架設置爲滑塊並將其大小和原點設置爲相對於菜單項nsview: let menuVolumeSlider = NSSlider.init(frame:NSRect(x:positionX,y:positionY,width:Width,height:Height)) –