2013-01-18 2 views
2

다른 감도 수준을 가진 범위 슬라이더를 만들고 싶습니다. 사용자가 선택한 범위의 특정 부분에 따라 다르게 작동해야합니다. 즉, 슬라이더의 범위가 1-100,000이면 낮은 값으로 범위를 설정하면 1이 점프하고 높은 값으로 범위를 설정하면 100으로 점프합니다.다른 세분화 수준을 가진 UISlider

이베이는 웹 사이트에서 이러한 종류의 슬라이더를 구현했습니다 왼쪽의 가격대 슬라이더를 확인하십시오. 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); 

여기서 sliderUISlider이다. 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 
+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 

...

당신이 아이디어를 얻을?