2015-07-21 36 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之間的浮點數?我看到你把它列在這裏,我現在才知道如何正確解釋它。 –

相關問題