我正在尝试使用像UISwitch这样的UISlider,因为我可以自定义UISlider和东西。 我想完美地模仿UISwitch机制。
稍微改变一下公差,在拖动中间点后通过中间点改变。
我已经设置了一个UISlider,带有我想要的图像,min 0 max 1,默认0,连续属性OFF;在内部触摸时激发下面的方法。
我在下面编写了算法,但只有一件事它没有用。 将旋钮从一端拖动到另一端时,它会反弹回来。 (例如1.0到0.0)
你能帮我完善一下吗? 谢谢!
算法:
- (void)sliderChanged:(UISlider *)slider {
[UIView animateWithDuration:0.2 animations:^{
if ((slider.value >= 0.50 || slider.value == 0.0 || slider.value <= 0.10) && slider.value != 1.0) slider.value = 1.0;
else if ((slider.value < 0.50 || slider.value == 1.0 || slider.value >= 0.90) && slider.value != 0.0) slider.value = 0.0;
}];
}
答案 0 :(得分:1)
你编程的逻辑是告诉它“反弹”
将其从1.0拖动到0.0:
[滑块值] = 0
你已经说过了: 如果值== 0且值!= 1则将值设置为1与您的第二条逻辑路径相同 如果value == 1且value!= 0,则将值设置为0
- (void)sliderChanged:(UISlider *)slider {
[UIView animateWithDuration:0.2 animations:^{
if (slider.value >= 0.50)
slider.value = 1.0;
else if (slider.value < 0.50)
slider.value = 0.0;
}];
}
另外,为什么你不想使用UISwitch?
答案 1 :(得分:0)
我一直在浏览UIKit并为我一直在努力的一些应用程序定制所有内容。我在UISwitch中找到的解决方案是基于UIControl
从那时起,我通过
处理拖拽 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
你也可以实现一个轻击手势,以便像原生开关那样轻敲开关。
我创建了自己的UIControl,因为我觉得我无法用UISlider实现那种“原生”的捕捉感觉。