いくつかのコードを検索しましたNSSliderCell
が、探していることを実行する方法が見つかりません。
このようなものを作成したいと思います(白い線はスライダーノブ、1ピクセル幅です):
これを音楽トラックのタイムバーに使用するので、毎秒移動します(そのため、を使用しNSSlider
て作業を簡単にします)。
上の画像のように、透明な中央のバーを備えたスライダーを作成するには、何をする必要がありますか?
PS:タッチ可能ではなく、表示用です。
いくつかのコードを検索しましたNSSliderCell
が、探していることを実行する方法が見つかりません。
このようなものを作成したいと思います(白い線はスライダーノブ、1ピクセル幅です):
これを音楽トラックのタイムバーに使用するので、毎秒移動します(そのため、を使用しNSSlider
て作業を簡単にします)。
上の画像のように、透明な中央のバーを備えたスライダーを作成するには、何をする必要がありますか?
PS:タッチ可能ではなく、表示用です。
私はついにそれを手に入れました:
NSSliderCell
プロパティを持つサブクラスを作成しました@property float x
;drawKnob
メソッドを無効にし、その中に次のように書きました。-(void)drawKnob:(NSRect)knobRect {self.x =knobRect.origin.x; }
NSSlider
(小さくして、幅をウィンドウの幅に変更しました)、セルクラスを作成したものに変更しました。[_timeBarSlider setMinValue:0]; [_timeBarSlider setMaxValue:myTrack.duration]; [_timeBarSlider setDoubleValue:myPlayer.currentPosition]; [[_timeBarImageView animator] setFrame:NSMakeRect(_timeBarSliderCell.x, yourYCoordinate, yourWidth, yourHeight)];
_timerBarSlider
はIBにあるNSSliderです/_timerBarImageView
は垂直の画像ラインを含む画像ビューです/_timerBarSlderCell
はNSSliderのセル(サブクラス化された)
ですPS:NSSliderはそのウィンドウ内のすべてのオブジェクトの背後にあるため、ユーザーには表示されません。メソッドが呼び出されないsetHidden:YES
ため、オンにすることはできません。drawKnob
これは、1 ピクセル幅の仕切りを使用した垂直分割ビューのように見えます。あなたはそれを試すかもしれません。必要に応じて簡単に移動できるように、仕切りの位置を設定する方法があります。NSSplitview のサブクラスを作成し、dividerThickness メソッドをオーバーライドして 1 を返すことにより、分割線を 1 ピクセルにすることができます。次に、2 つのサブビューの背景を黒に設定するだけです。簡単に試すことができるので、うまくいくかもしれません。幸運を。
drawRect:
をサブクラス化するときと同様にNSView
、実装を除いて、を使用[self doubleValue]
して線を引く場所を決定するだけでオーバーライドできます。NSSlider
ただし、この場合、サブクラス化の意味がわかりません。カスタムNSView
は、線を描画する場所を決定するプロパティを持つことができ、他のコードはそのプロパティを設定したり、それにバインドしたりできます。