2013-01-18 36 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 

...

你的想法?

相關問題