6

有没有办法让 iPhone 应用程序中的 UISlider 输出的值呈指数级增长?例如第一个第三个生成1 -10,第二个第三个生成11到100,最后一个第三个生成101到1000?

4

2 回答 2

14

您可以从滑块计算自己的 log/exp 值,并显示该值!

但是如果你想要一个介于 1 到 1000 之间的值,你可以将滑块的最小值设置为 0,最大值设置为 3,然后取 10 的幂:

powf(10.0,mySlider.value)
于 2010-11-05T11:51:17.037 回答
13

我从这篇文章中派生了这些 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);
}
于 2011-03-12T04:19:27.513 回答