如何设置UISlider的时间间隔为0.02

时间:2011-09-20 13:35:48

标签: iphone objective-c cocoa-touch ios4 uislider

我需要将时间间隔设置为0.02到UISlider,并且在valueChanged方法中,当滑块的值精确变为0.02时,我需要反映一些东西。像0.02,0.04,0.08 ....

4 个答案:

答案 0 :(得分:0)

做一些像

这样的事情

-(IBAction)valueChanged:(id)sender
{
    if (sender.value == 2)
    {
        //do something here 

    }
}

修改

我刚才意识到比较花车只是c和客观c的痛苦。所以,如果我是你,我会使用int(2)而不是float(0.02),并在你需要计算时将int转换为浮点数。

答案 1 :(得分:0)

要在UISlider中实现离散值,您需要在valueChanged方法中处理此逻辑。例如

-(void)valueChanged:(UISlider *)slider {
   NSInteger value = (NSInteger) (slider.value+0.005)*100;
   value = (value/2) * 2;  //round down if necessary
   [slider setValue:value/100.0 animated:NO];
}

如果需要,可以阅读调整后的值,它将是value/100.0 注意:也许您必须将滑块的continuous属性设置为NO

答案 2 :(得分:0)

我知道您想知道UISlider的值何时增加/减少0.02,所以:

我认为您必须存储UISlider的最后一个值。

-(IBAction)valueChanged:(id)sender {
     UISlider * slider = (UISlider *) sender;
     //using fabs() because maybe value decreased
     if (fabs(slider.value - lastValue) == 0.02 ) 
     {
         //Your code here
     }
     lastVaule = slider.value;
}

答案 3 :(得分:0)

我在滑块中有正值和负值。 所以上述所有答案都对我没用。 即使我无法比较滑块的旧值和新值与==的差异。 所以这是另一个问题。

这是我的工作代码。

float incDecTempoVal=0.02;
float val_tempo=[[NSString stringWithFormat:@"%.02f",sliderBMP.value] floatValue];

if (sliderBMP.value<0.0) 
    sliderBMP.value=sliderBMP.value-(incDecTempoVal-fabs(fmod(val_tempo,incDecTempoVal)));

else 
    sliderBMP.value=sliderBMP.value+(incDecTempoVal-fabs(fmod(val_tempo, incDecTempoVal)));