2011-04-11 66 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);