2016-08-15 8 views
0

を使用してNSSliderに最小/最大画像を追加:私はプログラム的NSSliderを作成し、NSMenuItemでそれを実現しスウィフト

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

しかし、私が達成したい結果は、このようなSliderの左端/右端に最小/最大画像を持つSliderです。

enter image description here

どうすればNSMenuItemを実現できますか?

EDIT:

私はカスタムNSViewの作成した:NSImageではを作成し、その後...

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

を...

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

...とmenuVolumeSliderを追加しましたとimg私のカスタムビューに:

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

...それが機能しました!しかし、誰も私にサブビューの位置を変更するヒントを教えていただけますか?

enter image description here

答えて

1

スライダー2枚の画像が含まれますNSViewのを作成します。次に、menuVolumeSliderItem.viewをNSViewに設定します。

+0

この方法で再生すると、スライダーだけをビューに追加しても隠れてしまうとどうなりますか?スライダの幅を変えてビューをより良く調整できますか?それを再生し、それがなぜ表示されていないのか理解しようとしますが、これはあなたが取るべきアプローチと方向です。 @yyany –

+0

ヘイロイ、助けてくれてありがとう、本当に感謝します!私は問題を解決することができた。サブビューの位置を変更する方法を私に伝えることができれば嬉しいです。前もって感謝します! – ixany

+0

フレームをスライダに設定し、メニュー項目を基準にしてサイズと原点を設定します。nsview: let menuVolumeSlider = NSSlider.init(フレーム:NSRect(x:positionX、y:位置Y、幅:幅、高さ:高さ)) –

関連する問題