2011-05-17 69 views
0

我有一個滑塊,其minValue = 0和maximumValue = 1000.我有一個滑塊上的氣泡,與滑塊的拇指一起運行,並顯示滑塊的值。 但我無法用滑塊拇指運行氣泡。 下面的代碼片段:如何使用slidervalue和滑塊的拇指位置運行氣泡(在滑塊頂部)?

CGFloat sliderMax = localSlider.maximumValue; 
CGFloat sliderMin = localSlider.minimumValue; 
CGFloat sliderMaxMinDiff = sliderMax - sliderMin; 
CGFloat sliderValue = _dsp; 
CGFloat halfMax = (sliderMax+sliderMin)/2.0; 
//int hMax = [halfMax intValue]; 
CGFloat xCoord = halfMax- 55.0; 
CGFloat yCoord = (CGFloat)_positionX; 
if (sliderValue > halfMax) 
    { 
     xCoord = xCoord-(sliderValue-halfMax); 
    } 
else 
    { 
     xCoord = xCoord + (halfMax-sliderValue); 
    } 
xCoord= xCoord + (642/sliderMaxMinDiff)*(sliderValue-sliderMin); 
newB.frame = CGRectMake(xCoord,yCoord,84,47); 

回答

0

@Ashutosh這可能是一些使用

-(void)sliderValueChanged:(id)sender{ 

    UISlider *slider = (UISlider*)sender; 
    CGFloat sliderMin = slider.minimumValue; 
    CGFloat sliderMax = slider.maximumValue; 
    CGFloat sliderMaxMinDiff = sliderMax - sliderMin; 
    CGFloat sliderValue = slider.value; 

    if(sliderMin < 0.0) { 

     sliderValue = slider.value-sliderMin; 
     sliderMax = sliderMax - sliderMin; 
     sliderMin = 0.0; 
     sliderMaxMinDiff = sliderMax - sliderMin; 
    } 

    CGFloat xCoord = ((sliderValue-sliderMin)/sliderMaxMinDiff)*[slider frame].size.width-SLIDER_CALLOUT_WIDTH/2.0; 

    CGFloat halfMax = (sliderMax+sliderMin)/2.0; 

    if(sliderValue > halfMax) { 

     sliderValue = (sliderValue - halfMax)+(sliderMin*1.0); 
     sliderValue = sliderValue/halfMax; 
     sliderValue = sliderValue*11.0; 

     xCoord = xCoord - sliderValue; 
    } 

    else if(sliderValue < halfMax) { 

     sliderValue = (halfMax - sliderValue)+(sliderMin*1.0); 
     sliderValue = sliderValue/halfMax; 
     sliderValue = sliderValue*11.0; 

     xCoord = xCoord + sliderValue; 
    } 
    int index = ceil(slider.value) ; 


    if (MIN_INDEX<= index <=MAX_INDEX) { 
     CGPoint callOutPoint = CGPointMake(xCoord, slider.frame.origin.y); 
     //[self drawCallOutAtRect:callOutPoint andDate:[self.dataSourceArray objectAtIndex:(8-index)]];  
     //Call A Function To draw Bubble on Slider Top 
    } 
    previousIndex = index; 
} 

您也可以採取一些暗示從https://github.com/elc/ELCSlider

這裏是我做了什麼enter image description here屏幕截圖

我使用這些值添加了滑塊 -

UISlider *timeSliderObj = [[UISlider alloc] initWithFrame:CGRectMake(0, 0, 280, 44)]; 
timeSliderObj.maximumValue = 8; 
timeSliderObj.minimumValue = 1; 
timeSliderObj.value = 8; 
+0

你能否解釋一下變量的不同之處。我有一些錯誤,不明白這些變量是什麼。 – Ashutosh 2011-05-18 14:52:46

+0

我需要用滑塊顯示八個以前的日期才能做出最後的選擇。因此MIN_INDEX = 0和MAX_INDEX = 7,previousIndex的類型爲int,用於跟蹤上一個滑塊索引(0,1,2,3etc),沒有其他變量在此函數的範圍之外聲明。你得到錯誤的變量是什麼? – 2011-05-18 15:21:26

+0

我的計算工作正常,值17(分鐘)和67(最大),但它只是不適用於值爲0-1000或更多的值。它開始倒退或做一些隨機的事情。我也嘗試調試,並看到一段時間後,它消極。 – Ashutosh 2011-05-18 15:31:21