2013-01-18 40 views
2

我想要创建具有不同灵敏度级别的范围滑块。 它需要采取不同的行为,具体取决于用户选择的范围内的特定部分。 ie - 如果我的滑块的范围是1-100,000,那么将范围设置为较低的值将跳过1,并将范围设置为较高的值将跳过100.UISlider具有不同的分割级别

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

任何想法?

回答

3

将滑块的范围设置为0 - 5.然后将所需的值计算为10^sliderValue。这基本上给你一个对数的尺度。

如果你想要离散的,但不同的线性范围,那么kabram的答案可能更多你想要的。

更新:

设置滑块的范围从0.0到5.0。当滑块的值的变化,计算出的值变为:

double newValue = pow(10, slider.value); 

其中sliderUISliderpow是一个标准的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 
+0

请你详细说明一下吗?我没有得到你建议的计算 – Rizon

+0

@Rizon看到我的更新 – rmaddy

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 

...

你的想法?

相关问题