2011-04-11 70 views

回答

12

yourSlider.value = x;

你真的應該閱讀文檔,很多偉大的資源,在iOS Developer Center

編輯:至於你更具體的問題的意見:

yourSlider.minimumValue = -10; 
yourSlider.maximumValue = 10; 
[yourSlider addTarget:self action:@selector(roundValue) forControlEvents:UIControlEventValueChanged]; 

- (void)roundValue{ 
    yourSlider.value = round(yourSlider.value); 
} 
+1

喔是這樣的.. 我知道如何設置的值.. 我需要增量間隔設置.. 含義,如果滑塊範圍爲-10至10 ... N我希望增加間隔爲0.5 ...那我怎麼設置的時間間隔.. – Manmay 2011-04-11 06:42:09

+0

在'UIControlEvenValueChanged'你繞過slider.value。 – 2011-04-11 06:52:03

+0

邁克,感謝DAT是有用的.. 滑塊現在與所需的間隔遞增,但與滑塊球混蛋所有的時間.. :( – Manmay 2011-04-11 07:56:11

1

UISliders不「增量」自己的價值,他們增加或減少,根據他們是如何打動他們的價值。您可以使用這些屬性來設置滑塊限制:

slider.minimumValue = 0.0; 
slider.maximumValue = 0.5; 
0

我建議是,把水平只是要放值和設定最大值,然後就可以計算值之間的最小值滑塊下方通過任何一點和分裂,並最終在uilabel展示價值觀。 希望這將有助於

好運

5

的靈活解決方案:

// define MIN_VALUE, MAX_VALUE and INTERVAL somewhere, such as 3, 18 and 3 

    slider.TouchUpInside += delegate { 
     touchUpInside(); 
    }; 

    /// <summary> 
    /// set value to one of intervals 
    /// </summary> 
    void touchUpInside(){ 

     // get the nearest interval value 
     for(int i=MIN_VALUE; i<=MAX_VALUE; i=i+INVERVAL){ 

      if(slider.Value > i && slider.Value < i + INVERVAL){ 
       if(slider.Value - i < i + INVERVAL - slider.Value){ 
        slider.Value = i; 
       }else{ 
        slider.Value = i + INVERVAL; 
       } 

       break; 
      } 
     }   
    } 
+0

thankx根茨真的是給我的工作,你只是救我大量的時間:) – 2011-12-28 12:39:39

+0

值得學習..節省時間:) – 2015-02-04 06:44:44

4

我知道這個問題是舊的,但我想和大家分享我是如何做到這一點。

假設UISlider對象已經被初始化時,首先,UISlider對象的最小和最大值必須設置:

mySlider.minimumValue = -2.0; 
mySlider.maximumValue = 2.0; 

然後,設置將處理在滑塊的變化選擇器:

[mySlider addTarget:self action:@selector(sliderDidChangeValue:) forControlEvents:UIControlEventValueChanged]; 

此外,設置間隔(屬性)。時間間隔是肯定的,這一點很重要。 (而且,真的,時間間隔必須是正數。)

self.interval = 0.5 //_interval is float 

聲明的方法(S):

- (void)sliderDidChangeValue:(id)sender 
{ 
    UISlider *slider = (UISlider *)sender; 

    //Round the value to the a target interval 
    CGFloat roundedValue = [self roundValue:slider.value]; 

    //Snap to the final value 
    [slider setValue:roundedValue animated:NO]; 
} 

- (float)roundValue:(float)value 
{ 
    //get the remainder of value/interval 
    //make sure that the remainder is positive by getting its absolute value 
    float tempValue = fabsf(fmodf(value, _interval)); //need to import <math.h> 

    //if the remainder is greater than or equal to the half of the interval then return the higher interval 
    //otherwise, return the lower interval 
    if(tempValue >= (_interval/2.0)){ 
     return value - tempValue + _interval; 
    } 
    else{ 
     return value - tempValue; 
    } 
} 
3
int sliderValue = kSliderInterval * floor((slider.value/kSliderInterval) + 0.5);