使用UISider生成值的对数标度

问题描述 投票:4回答:2

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

iphone objective-c uislider logarithm
2个回答
12
投票

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

但是,如果您想要一个介于1到1000之间的值,则可以将滑块的min设置为0,max设置为3并使用10的幂:

powf(10.0,mySlider.value)

11
投票

我从这篇文章中得出了这些Objective C方法:Logarithmic slider

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

0
投票

该代码对我有很大帮助(9年后)。我可以以某种方式调整比例因子吗?

© www.soinside.com 2019 - 2024. All rights reserved.