2013-03-07 31 views
0

我將如何製作對齊選定對象的滑塊。我在那裏有3個選擇,一個在左邊,一個在右邊,一個在中間。當用戶將滑塊左移一點時,它將動畫並捕捉到左邊的選擇。右側和中間的效果相同。如何創建對齊到選定對象的滑塊

如果你對應用UBER很熟悉,他們有一些東西(有4個部分),這正是我所說的。這裏的屏幕截圖(底部的滑塊): http://i.imgur.com/xTPfDcY.png

任何想法我會如何實現這個?我應該使用UISlider還是不使用?

非常感謝, 加布

回答

6

不考慮尤伯杯滑塊的自定義外觀,可以實現通過偵聽觸摸的內心活動這個「動畫捕捉」的行爲(和潤色之外,出於完整性清酒)在你的滑塊,並將其值設置爲最接近的整數值:

- (IBAction)sliderTouchUp:(UISlider *)sender 
{ 
    [sender setValue:floorf([sender value] + 0.5) animated:YES]; 
} 

設置最小值爲1,最大值3會給你三個「停止」滑塊上,當用戶釋放滑塊,它將動畫到最近的停止點。

+0

This works。儘管如此,我無法在中間停下來。我應該如何使價值在中間停下來? – evenodd 2013-03-08 16:01:13

+0

不確定你的意思。在我的實驗中,當我按照我所述進行配置時,它停在中間(值爲2)。你是指在用戶仍在拖動時捕捉它嗎?因爲我的代碼不這樣做。 – warrenm 2013-03-08 16:02:53

+0

哦,我明白了。非常感謝。下一步,定製設計。我甚至可以用一個uislider? – evenodd 2013-03-08 16:07:11

1

基本的想法是,當用戶移動滑塊時,您想查看滑塊的當前值,如果滑塊落在「捕捉」範圍內,則將滑塊的值設置爲所需的位置。類似這樣的:

- (void)sliderUpdated:(UISlider *)slider { 
    float val = slider.value; 
    if (val>= 0.46 && val <= 0.54) { 
     [slider setValue:0.5 animated:YES]; 
    } 
} 

顯然你需要檢查三個不同的範圍。我發佈的代碼使得滑塊似乎在中間有一個鎖定。您可能還需要跟蹤滑塊正在被移動的方向,以便知道將滑塊向左或向右移動。

+0

-1:這實際上並不重複Uber應用程序中滑塊的行爲,此外,它還會導致滑塊大拇指在靠近「制動器」時發生奇怪的擺動。 – warrenm 2013-03-08 03:27:33

+0

正如我在我的回答中所述,代碼只是一個粗略的指導方針,讓我們瞭解如何根據當前值調整滑塊的值。在我真正使用這段代碼的時候,我並沒有對價值的變化進行動畫處理,因此效果更好。我用動畫發佈了代碼,因爲這是問題中想要的。 – rmaddy 2013-03-08 03:58:59