Шаги UISlider

У меня есть UISlider, который скользит в диапазоне от 0,0 до 1,0.

По умолчанию ползунок позволяет пользователям перемещаться с действительно большим количеством цифр дробной части, но я хочу, чтобы мои пользователи могли увеличивать / уменьшать только на 0,001 для каждой «галочки» вверх или вниз на ползунке.

Можно ли это настроить?

Спасибо!


person Stan Note    schedule 16.03.2010    source источник


Ответы (3)


Насколько велик этот слайдер? Даже если у вас он охватывает всю ширину экрана в ландшафтном режиме, изменение 0,001 составляет всего около половины пикселя. Похоже, вам просто нужно округлить значение ползунка (за кулисами) до требуемой точности.

person Noah Witherspoon    schedule 16.03.2010

Как насчет чего-то чрезвычайно простого, например: слайдера с тремя вариантами выбора (со значениями {0, 1, 2}) с подключенными к нему IBAction и IBOutlet.

-(float)roundValue:(float)value{

    if(value <=   0.5) return 0;
    if(value <=   1.5) return 1;
    return 2;
}

-(IBAction)mySliderChanged:(id)sender {

    float value = mySliderOutlet.value; // retrieve value via IBOutlet
    value = [self roundValue:value];

    // Update the slider to 'snap' in final position
    [[self mySliderOutlet] setValue:value animated:YES];
}
person Remy Vanherweghem    schedule 05.02.2011

Это должно помочь:

- (void) getSliderValue:(UISlider *)paramSender{
    float increment = 0.001;
    float newValue = paramSender.value /increment;
    paramSender.value = floor(newValue) * increment;
    NSLog(@"Current value of slider is %f", paramSender.value);
}
person HSNN    schedule 05.09.2014