Используйте UISider для генерации логарифмической шкалы значений - PullRequest
4 голосов
/ 05 ноября 2010

Есть ли способ получить значения, выводимые UISlider в приложении iPhone, для экспоненциального увеличения?Например, первая треть генерирует 1-10, вторая треть генерирует 11-100, а последняя треть генерирует 101-1000?

Ответы [ 2 ]

12 голосов
/ 05 ноября 2010

Вы можете самостоятельно вычислить значение log / exp с помощью ползунка и отобразить это значение!

Но если вам нужно значение от 1 до 1000, вы можете установить мин ползунка на 0, макс на 3 и сделать мощность 10:

powf(10.0,mySlider.value)
11 голосов
/ 12 марта 2011

Я получил эти методы Objective C из этого поста: Логарифмический слайдер

-(double) wpmForSliderValue: (double) sliderValue {
    // Input will be between min and max
    static double min = WPM_SLIDER_MIN;
    static double max = WPM_SLIDER_MAX;

    // Output will be between minv and maxv
    double minv = log(WPM_SCALE_MIN);
    double maxv = log(WPM_SCALE_MAX);

    // Adjustment factor
    double scale = (maxv - minv) / (max - min);

    return exp(minv + (scale * (sliderValue - min)));
}

-(double) sliderValueForWpm: (double) wpm {
    // Output will be between min and max
    static double min = WPM_SLIDER_MIN;
    static double max = WPM_SLIDER_MAX;

    // Input will be between minv and maxv
    double minv = log(WPM_SCALE_MIN);
    double maxv = log(WPM_SCALE_MAX);

    // Adjustment factor
    double scale = (maxv - minv) / (max - min);

    return (((log(wpm) - minv) / scale) + min);
}
...