如何让UISlider“跟踪”隐形?

时间:2010-11-11 02:25:17

标签: iphone objective-c opacity uislider

我正试图在我的应用程序中模仿Apple的“Slide to Unlock”功能。我到了这一点(下面的图片),但正如你所看到的那样,UISlider的“轨道”是可见的并且掩盖了我的文字。有没有办法以编程方式更改属性,使“轨道”不可见?

alt text

如果您需要我的任何代码,请告诉我。

提前致谢!

编辑:如果我将滑块的alpha更改为0,它会摆脱我的滑动按钮,所以这样做不会起作用,除非我做错了。 :)

8 个答案:

答案 0 :(得分:26)

这是一种更简单的方法。无需创建图像,只需实例化一个空的UIImage类:P

UIImage *clearImage = [[UIImage alloc] init];
[self.slider setMinimumTrackImage:clearImage forState:UIControlStateNormal];
[self.slider setMaximumTrackImage:clearImage forState:UIControlStateNormal];

答案 1 :(得分:25)

答案 2 :(得分:6)

可能没有办法隐藏赛道; “幻灯片解锁”的行为与UISlider不同,可能是一个自定义控件。您可能能够破解滑块控件,可能是通过将不透明度设置为低(0将使其隐藏并且不会接收到触摸),但是如果你走这条路线,你可能会有一些突破操作系统更新。对于像微软这样的兼容性,Apple并没有向后倾斜。

执行此操作的正确方法是使用自定义控件。看起来比使用UISlider更有用,但如果你将它与你花费的所有时间进行比较并且/或将花费黑客攻击UISlider,那就不是了。

要做到这一点:子类UIControl。编写自己的绘图代码,使其看起来正确(您可以重用一些现在正在做的事情)。然后注册触摸事件以移动滑块手柄:

  • UIControlEventTouchDown:如果它在句柄上,设置一个“移动”标志
  • UIControlEventTouchDragInside:如果设置了移动标志,则将手柄移动到触摸位置;你可以只更新一个实例变量,调用setNeedsDisplay将它绘制到新的位置。
  • UIControlEventTouchUpInside:如果设置了移动标志,并且句柄结束,则解锁

如果你想模仿真正的解锁手柄,可以玩它并看看它的行为方式。您可能需要以不同方式响应事件(如果您在滑块路径之外拖动会发生什么)。但你应该能够得到它的要点。

答案 3 :(得分:5)

在斯威夫特:

slider.setMinimumTrackImage(UIImage(), forState: .Normal)
slider.setMaximumTrackImage(UIImage(), forState: .Normal)

答案 4 :(得分:3)

在回答上述问题时,您可以为最小和最大曲目图像设置透明的1px png。

答案 5 :(得分:3)

看起来只是将色调颜色设置为清除它...

    [slider setMinimumTrackTintColor:[UIColor clearColor]];
    [slider setMaximumTrackTintColor:[UIColor clearColor]];

答案 6 :(得分:2)

@Arjay Waran的答案在我看来是最好的。

继续使用它的Swift 3.0版本。

slider.minimumTrackTintColor = UIColor.clear
slider.maximumTrackTintColor = UIColor.clear

干杯

答案 7 :(得分:0)

从故事板:-

Min TrackMax Track选择清晰的颜色

enter image description here