首页 > 解决方案 > 以指数方式改变 UISlider

问题描述

我正在尝试创建一个值以指数方式变化的滑块。

假设最小值为 0,最大值为 100。滑块的前半部分应缓慢更改值,例如 0-10,然后更快。我在 StackOverflow 上查找了不同的网站,但对我来说没有一个真正有意义。似乎有像 pow() 和 exp() 这样的数学运算。最好将它全部放在一个函数中,这样我就可以将它用于不同的参数,函数如下所示:

function(slidervalue, min, max, factor)

并返回值。

标签: swift

解决方案


我设法创建了这两个函数来解决我的问题:

func setParamLog(sliderValue: Float, min: Float, max: Float)->Float
{
    // Output will be between minv and maxv
    var minv :Float = log(min);
    var maxv :Float = log(max);
    // Adjustment factor
    var scale :Float = (maxv - minv) / (max - min);

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

func setSliderLog(wpm: Float, min: Float, max: Float)->Float
{
    // Output will be between minv and maxv
    var minv :Float = log(min);
    var maxv :Float = log(max);
    // Adjustment factor
    var scale :Float = (maxv - minv) / (max - min);

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

现在想知道如何调整比例因子会很棒


推荐阅读