1

关于如何在 UISlider 中实现不同的值密度,你有什么巧妙的想法/解决方案吗?我的意思是我们将在 UISlider 的左半边有 20 步,在 UISlider 的右半边有 100 步。这意味着最小值为 0,最大值为 120。但它们不会均匀分布,但左侧的密度会小得多。像这样>

|0---------------20----------------120|

4

2 回答 2

2

假设您希望上半场从 0-20 线性发展,下半场从 20-120 线性发展,然后执行以下操作:

将滑块的范围设置为 0 - 200。然后,当您需要所需的值时,使用以下公式将滑块的值转换为所需的值:

if (slider.value <= 100) {
    desiredValue = slider.value / 5.0;
} else {
    desiredValue = slider.value - 80;
}
于 2013-02-04T15:32:44.360 回答
1

我最近做了类似的事情,使用 n 次根数学来确定我UISlider的位置。我有几个滑块可以指示一个范围内的最小值和最大值,但由于大多数时候这些值倾向于全频谱的较低范围,所以我想更加强调它。为了实现这一点,我使用(在我的例子中)一个平方根函数来计算滑块的位置:

slider.value = sqrt(intValue/127.f);

127是我范围内的最大值,这使我更加强调值谱的较低范围。有了这个,我在滑块上打了半满,值只有 32,而不是 64。您可以将其概括为:

slider.value = pow(intValue/127.f, (1/root));

whereroot是另一个供您使用的变量。值越高,root曲线在开始时越陡峭,在接近结束时越浅。

相反,如果您想将滑块的当前位置作为值读取,则只需反转上面的该函数:

myValue = (slider.value*slider.value) * 127;

同样,您可以概括为:

myValue = pow(slider.value, root) * maxValue;
于 2013-02-04T15:19:08.973 回答