swift - 以指数方式改变 UISlider
问题描述
我正在尝试创建一个值以指数方式变化的滑块。
假设最小值为 0,最大值为 100。滑块的前半部分应缓慢更改值,例如 0-10,然后更快。我在 StackOverflow 上查找了不同的网站,但对我来说没有一个真正有意义。似乎有像 pow() 和 exp() 这样的数学运算。最好将它全部放在一个函数中,这样我就可以将它用于不同的参数,函数如下所示:
function(slidervalue, min, max, factor)
并返回值。
解决方案
我设法创建了这两个函数来解决我的问题:
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);
}
现在想知道如何调整比例因子会很棒
推荐阅读
- javascript - div 类挡住了视频的中间
- java - 将springboot版本从2.3.9升级到2.5.2,应用失败
- r - 如何在 2 个数据框中使用循环数据进行搜索和替换?
- azure - 带有刷新令牌的 Azure 数据资源管理器应用注册错误
- c - 从 double 转换为 short 会降低 C 中的结果
- java - org/apache/poi/ss/usermodel/CellStyle:不支持的major.minor 52.0版
- c# - 如何从分页的 ef 核心查询中获取可用的总行数
- php - 在计数中添加来自同一数组的第二个键值
- ios - 金属中的阴影,斯威夫特
- npm - npm 错误!代码 ERR_INVALID_ARG_TYPE npm install 时出错