2015-07-21 52 views
0

我有2个滑块,两个滑块的最小值和最大值都设置为0和1.在图中,它们模拟最多300总帧数合并。如何在不改变当前最小和最大滑块值的情况下转换UISlider值

enter image description here

对于第一个滑块,我得到正确0-150帧的范围与

int selectedFrameCount = 300; int currentSelectedFrameValue = sender.value * (selectedFrameCount/2);

我想知道如何获得一个范围150-300帧与第二个滑块没有改变最小和最大的UISlider值,因为我需要这些值单独计算。

对于单独的函数,我需要将该值从选定的150-300值转换回基于所选0-1值的浮点数。

example: 285 = x * (300/2) + 150; 
+1

为什么不使用这个? 'sender.value *(selectedFrameCount/2)+(selectedFrameCount/2)' –

回答

1

是不是那么简单

int currentSelectedFrameValue = (sender == firstSlider ? 0 : selectedFrameCount/2) 
    + sender.value * (selectedFrameCount/2); 

1

你必须想象你的钙的功能(它,所以你没有想象它:d)

y是INT你想 xsender.vale

y(x) = x * (selectedFrame/2)

如果你想翻译你的线y-axisselectedFrame/2你只需要将它添加为q值的线性方程y(x) = mx + q

所以,解决的办法是

int value = sender.value * (selectedFrame/2) + (selectedFrame/2) 

为int值转换成float值在0-1范围内,使用该

multipliedMaxValue = selectedFrame multipliedSelectedValue = value

multipliedMaxValue : 1 = multipliedSelectedValue : x 

,如果你想x ,只是做

float toRangeValue = (float)multipliedSelectedValue/(float)multipliedMaxValue; 
+0

好的谢谢。一旦你有了价值,你会如何将它转换回浮动状态? –

+1

我编辑了文章 –

+0

感谢您的更新。我仍然有点不清楚,看起来像“multipliedMaxValue = selectedFrame multipliedSelectedValue = value”都是相同的值。例如,如果我手动输入框285,我将如何获得结果作为0-1之间的浮点数?我看到你把它列在这里,我现在才知道如何正确解释它。 –