我想在表示时间轴上整数的离散点处停止滑块。什么是最好的方法来做到这一点?我不想在两者之间有任何价值。如果滑块可以“捕捉”到每个离散点的位置,那就太好了。iOS如何让滑块在离散点停止
回答
为了使滑块在特定点处“粘住”,viewcontroller应该在链接到滑块的valueChanged方法中根据滑块的值确定合适的四舍五入值,然后使用setValue:animated:将滑块移动到适当的地方。所以,如果滑块从0变为2,并且用户将其更改为0.75,则您认为这应该是1,并将滑块值设置为该值。
我在这里采取的步骤与jrturton的回答中所述的几乎相同,但是我发现滑块会比较明显地滞后于我的动作。这是我如何做到这一点:
将滑块放入Interface Builder中的视图。 设置滑块的最小/最大值。 (我用0和5)
在.h文件:
@property (strong, nonatomic) IBOutlet UISlider *mySlider;
- (IBAction)sliderChanged:(id)sender;
在.m文件:
- (IBAction)sliderChanged:(id)sender
{
int sliderValue;
sliderValue = lroundf(mySlider.value);
[mySlider setValue:sliderValue animated:YES];
}
在此之后在Interface Builder我迷上了“触摸的内心'滑块事件的文件的所有者,而不是'价值改变'。现在,当我的手指抬起时,它可以平滑地移动滑块并捕捉到每个整数。
谢谢@ jrturton!
UPDATE - 斯威夫特:
@IBOutlet var mySlider: UISlider!
@IBAction func sliderMoved(sender: UISlider) {
sender.setValue(Float(lroundf(mySlider.value)), animated: true)
}
此外,如果有达至情节板中我已上传一个简单的例子对挂钩的东西混淆到github上:https://github.com/nathandries/StickySlider
很好,但它”会下来。 lroundf将舍入到最接近的整数。 –
我也会使用'Touch Up Outside' – Zenuka
我做了这是怎么回事首先将当前滑块值的“输出”变量设置为一个整数(默认情况下它是一个浮点数)。然后将输出编号设置为滑块的当前值:
int output = (int)mySlider.value;
mySlider.value = output;
这会将其设置为以1整数为增量移动。要使其在特定的数字范围内移动,例如5秒内,请使用以下公式修改您的输出值。在上面的前两行之间加上:
int output = (int)mySlider.value;
int newValue = 5 * floor((output/5)+0.5);
mySlider.value = newValue;
现在当你移动它时,你的滑块“跳”到5的倍数。
我一样弥敦道建议,但我也想更新相关UILabel
实时显示当前值,所以这里是我做过什么:
- (IBAction) countdownSliderChanged:(id)sender
{
// Action Hooked to 'Value Changed' (continuous)
// Update label (to rounded value)
CGFloat value = [_countdownSlider value];
CGFloat roundValue = roundf(value);
[_countdownLabel setText:[NSString stringWithFormat:@" %2.0f 秒", roundValue]];
}
- (IBAction) countdownSliderFinishedEditing:(id)sender
{
// Action Hooked to 'Touch Up Inside' (when user releases knob)
// Adjust knob (to rounded value)
CGFloat value = [_countdownSlider value];
CGFloat roundValue = roundf(value);
if (value != roundValue) {
// Almost 100% of the time - Adjust:
[_countdownSlider setValue:roundValue];
}
}
的缺点,当然,是它每个滑块需要两个动作(方法)。
- 1. 带停止点的滑块
- 2. 离散Windows手机滑块
- 3. 如何停止滑块动画悬停?
- 4. 角度材质 - 在离散md滑块中添加点到点
- 5. jquery滑块停止滑动
- 6. BJQS滑块停止
- 7. 我该如何停止拖动滑块
- 8. 如何让滑块在Magento
- 9. 停止滑块Mouseout(jquery)
- 10. D3滑块停止事件
- 11. 不能停止滑块
- 12. hoverPause永远停止滑块
- 13. bx滑块不会停止
- 14. jQuery的滑块不停止
- 15. 完成滑动后停止滑块
- 16. 在Weka中,如何停止离散化训练实例的CfsSubsetEval?
- 17. 如何暂停悬停在滑块
- 18. 如何使WPF滑块仅捕捉到离散整数位置?
- 19. 如何显示离散滑块的刻度线?
- 20. BJQS滑块暂停点击
- 21. 如何让定时器停止点击
- 22. Jquery滑块。在滑块停止提高服务器端事件
- 23. jquery滑块不会停止在最后
- 24. 停止/启动滑块 - 在一个周期后停止
- 25. 鼠标悬停时如何停止滑块?
- 26. 使用滑块的散点图更新
- 27. Android Seekbar - 如何检测滑块在特定点停止超过X毫秒?
- 28. 如何在iOS中暂停音频及其定时器滑块?
- 29. 如何在拖动时停止更新滑块的值?
- 30. 如何停止滑块在glide.js中再次循环?
弥敦道下面说,使用“润色”内,因为它会在拖动时闪烁,如果你使用的valueChanged – Zenuka
,但只适用如果滑块是连续的,但肯定的,在这种情况下,它是一个更好的解决方案 – jrturton