我在NSSliderCell
上搜索了一些代码,但我找不到办法去做我正在寻找的东西。
我想创建这样的东西(白线是滑块旋钮,1像素宽度):
我将在音乐曲目的时间栏中使用它,所以它会每秒移动一次(这就是为什么我想使用NSSlider
让事情变得容易)。
制作带有透明中间条的滑块我需要做什么,类似于上图?
PS:它不会被触摸,只是为了展示。
答案 0 :(得分:0)
您可以覆盖drawRect:
,就像在子类化NSView
时一样,除了在您的实现中,使用[self doubleValue]
来确定绘制线的位置。但是,在这种情况下,我没有看到子类NSSlider
的重点。自定义NSView
可以具有确定绘制线的位置的属性,然后其他代码可以设置该属性或绑定到该属性。
答案 1 :(得分:0)
对于我来说,这看起来像一个垂直的分割视图,带有1像素宽的分隔线。你可以尝试一下。有一种方法可以设置分隔线的位置,因此可以根据需要轻松移动。并且您可以通过创建NSSplitview的子类并覆盖dividerThickness方法返回1来使分隔符成为1像素。然后,您只需将2个子视图的背景设置为黑色即可。这很容易尝试,也许它会对你有用。祝你好运。
答案 2 :(得分:0)
我终于明白了:
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
方法不会被调用。