我想创建一个具有不同灵敏度级别的范围滑块。 它需要根据用户选择的范围中的特定部分采取不同的行动。 即 - 如果我的滑块范围是1-100,000,那么将范围设置为较低值将跳过1,将范围设置为较高值将跳过100。
eBay在他们的网站上实现了这种滑块(注意左边的价格范围滑块):http://www.ebay.com/sch/i.html?LH_FS=0&_sacat=0&_from=R40&_nkw=car&_mPrRngCbx=1&_udlo=490&_udhi=21%2C000%2C000
有什么想法吗?
答案 0 :(得分:3)
由于滑块未显示相关值,为什么不简单地向值更改事件添加动作出口并计算相应的跳转。
因此,例如,将滑块的范围设置为1到100.假设您使用标签显示计算范围。
标签的值将是:
if slider.value < 10, then value = range
else if slider.value < 20 then value = 10 + (slider.value - 10) * 2 // increments of 2
else if slider.value < 50 then value = 10 + 10 * 2 + (slider.value - 20) * 5 // increments of 5
...
你明白了吗?
答案 1 :(得分:3)
将滑块的范围设置为0 - 5.然后将所需的值计算为10 ^ sliderValue
。这基本上给你一个对数刻度。
如果您想要离散但不同的线性范围,那么kabram的答案可能更符合您的要求。
更新
将滑块的范围设置为0.0到5.0。当滑块的值发生变化时,计算出的值变为:
double newValue = pow(10, slider.value);
其中slider
是UISlider
。 pow
是标准的C数学函数。这为您提供了以下内容:
slider.value newValue
0.0 1.0
1.0 10.0
2.0 100.0
3.0 1000.0
4.0 10000.0
5.0 100000.0