【问题标题】:How to set time interval to UISlider of 0.02如何将时间间隔设置为 0.02 的 UISlider
【发布时间】:2011-09-20 13:35:47
【问题描述】:

我需要为 UISlider 设置 0.02 的时间间隔,并且在 valueChanged 方法中,当滑块的值恰好更改为 0.02 时,我需要反映一些东西。比如 0.02 ,0.04,0.08 ....

【问题讨论】:

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


    【解决方案1】:

    只是做一些类似的事情

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

    编辑:

    我刚刚意识到比较浮点数只是 c 和 Objective-c 中的一个痛苦。所以如果我是你,我会使用 int (2) 而不是 float (0.02),并在需要时将 int 转换为 float。

    【讨论】:

      【解决方案2】:

      要在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

      【讨论】:

        【解决方案3】:

        我知道您想知道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;
        }
        

        【讨论】:

          【解决方案4】:

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

          这是我的工作代码。

          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)));
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-07-03
            • 2011-05-20
            • 2023-01-12
            • 1970-01-01
            • 1970-01-01
            • 2022-01-25
            • 2016-08-21
            相关资源
            最近更新 更多