对于如何在UISlider中实现不同密度值,您是否有一些巧妙的想法/解决方案?我的意思是我们在UISlider的左半部分有20个步骤,在UISlider的右半部分有100个步骤。这意味着最小值将为0,最大值将为120.但它们不会均匀分布,但左侧部分的密度要小得多。 像那样>
| 0 --------------- 20 --------------- 120 |
答案 0 :(得分:2)
假设您想要从上半年的0-20线性进展到下半场从20-120线性进展,那么请执行以下操作:
将滑块的范围设置为0 - 200.然后,当您需要所需的值时,请使用以下公式将滑块的值转换为所需的值:
if (slider.value <= 100) {
desiredValue = slider.value / 5.0;
} else {
desiredValue = slider.value - 80;
}
答案 1 :(得分:1)
我最近使用第n个根数学来确定UISlider
的位置。我有几个滑块指示一个范围的最小值和最大值,但由于大多数时候这些值倾向于全谱的较低范围,我想更加强调它。为实现这一目标,我使用(在我的情况下)平方根函数来计算滑块的位置:
slider.value = sqrt(intValue/127.f);
127
是我范围内的最大值,这使我更加重视价值范围的较低范围。有了这个,我在滑块上点了半满,只有32而不是64.你可以将它概括为:
slider.value = pow(intValue/127.f, (1/root));
其中root
是您要使用的另一个变量。 root
的值越高,曲线在开始时越陡,在接近结尾时越浅。
如果你想要将滑块的当前位置作为一个值读取,你只需要反转上面的那个函数:
myValue = (slider.value*slider.value) * 127;
同样,您可以概括为:
myValue = pow(slider.value, root) * maxValue;