2010-11-01 49 views
1

因此,UISlider很適合改變/選擇價值觀,但它看起來並不好看。我想要實現的更像是一個水平旋轉的錶盤。我已經擁有了所有需要的圖形,並且我已經實現了滾動視圖來左右滑動我的圖像。如何使用UIScrollView更改值,就像UISlider一樣?

現在的問題是在UISlider中unlick,我可以簡單地調用slider.value來獲取它的值,我不知道如何設置一個範圍值(最大值和最小值)以及如何獲取特定值UIScrollView的滾動。

回答

3

我不得不承認如何將scrollview用作滑塊,但是您可以使用contentOffset屬性來獲取「內容視圖的原點偏離原點的點滾動視圖「。

你需要做一些數學來把它變成你想要的值,但它很簡單。假設你的滾動視圖是水平的,並且可以滾動到400px。也就是說,如果contentOffset爲0,那麼你就開始了,如果contentOffset是400px,那麼你就是最後一個。你如何使用scrollview將決定你是如何工作的,如果你絕望,那麼你可以通過編程方式打印contentOffset的值,並憑經驗觀察範圍。

在這種情況下,你可以得到的距離的跨越只需在像滾動視圖比例:

CGFloat proportionOffset = scrollView.contentOffset/400.0f; 

然後,如果您想的範圍內進行建模[startx的,endX]然後就摸出:

CGFloat offset = startX + proportionOffset * (endX - startX); 

proportionOffset範圍爲0結束了1,則在0時contentOffset是0和1時contentOffset是400。如果,比如說,是STARTX 15和endX是35然後endX - STARTX是20。如果您將範圍爲0到1的數字乘以20,那麼您會得到範圍爲0到20的數字你想要的範圍有多遠。但是你的範圍不一定從0開始,所以你需要添加startX的值。

對於效率條款,將自己設置爲scrollview的委託並僅當您收到scrollViewDidScroll時才檢查新的contentOffset是明智的:。否則,你會進行大量的輪詢,而這絕對不是必要的,並且絕對最壞的情況是嚴重阻礙了CPU的睡眠能力(從而減少熱量並節省電池)。

+0

謝謝,我會給你一個鏡頭,但它看起來像我所需要的 – cgossain 2010-11-02 05:42:27