0

いくつかのコードを検索しましたNSSliderCellが、探していることを実行する方法が見つかりません。
このようなものを作成したいと思います(白い線はスライダーノブ、1ピクセル幅です):
ここに画像の説明を入力してください

これを音楽トラックのタイムバーに使用するので、毎秒移動します(そのため、を使用しNSSliderて作業を簡単にします)。
上の画像のように、透明な中央のバーを備えたスライダーを作成するには、何をする必要がありますか?

PS:タッチ可能ではなく、表示用です。

4

3 に答える 3

0

私はついにそれを手に入れました:

  • NSSliderCellプロパティを持つサブクラスを作成しました@property float x;
  • 私はdrawKnobメソッドを無効にし、その中に次のように書きました。

-(void)drawKnob:(NSRect)knobRect {self.x =knobRect.origin.x; }

  • をウィンドウにドラッグしNSSlider(小さくして、幅をウィンドウの幅に変更しました)、セルクラスを作成したものに変更しました。
  • そして、音楽が再生されているとき、1秒が経過するたびに私はします:
[_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

于 2013-01-17T19:40:11.170 に答える
0

これは、1 ピクセル幅の仕切りを使用した垂直分割ビューのように見えます。あなたはそれを試すかもしれません。必要に応じて簡単に移動できるように、仕切りの位置を設定する方法があります。NSSplitview のサブクラスを作成し、dividerThickness メソッドをオーバーライドして 1 を返すことにより、分割線を 1 ピクセルにすることができます。次に、2 つのサブビューの背景を黒に設定するだけです。簡単に試すことができるので、うまくいくかもしれません。幸運を。

于 2013-01-16T04:16:43.633 に答える
0

drawRect:をサブクラス化するときと同様にNSView、実装を除いて、を使用[self doubleValue]して線を引く場所を決定するだけでオーバーライドできます。NSSliderただし、この場合、サブクラス化の意味がわかりません。カスタムNSViewは、線を描画する場所を決定するプロパティを持つことができ、他のコードはそのプロパティを設定したり、それにバインドしたりできます。

于 2013-01-16T03:15:31.890 に答える