有没有一种方法可以使iPhone应用程序中的UISlider输出的值呈指数增长?例如,第一个三分之一生成1-10,第二个三分之一生成11到100,最后一个三分之一生成101到1000?
有没有一种方法可以使iPhone应用程序中的UISlider输出的值呈指数增长?例如,第一个三分之一生成1-10,第二个三分之一生成11到100,最后一个三分之一生成101到1000?
你可以通过滑块计算自己的log/exp值,并显示这个值!但是如果你想要一个在1到1000之间的值,你可以将滑块的最小值设为0,最大值设为3,然后进行10的幂运算:
powf(10.0,mySlider.value)
((10^x)-1)/9
的操作。例如,我发现在音量方面,从0.0到1.0的滑块值与以100为底数的对数最相关:float volumeLevel = (powf(100.0f, sliderValue)-1.0f)/99.0f;
- Albert Renshaw我从这篇帖子中提取了这些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);
}