2014-02-05 39 views
1

我正在研究一個看起來像輪子的控件,並且用於快速或精確滾動內容。下面是從教練的眼睛應用的例子: example scrolling wheel, coach's eye app在iOS上模仿無限視圖並使其動畫的正確方法

我先取看起來是這樣的: my first take on scrolling wheel control

目前的垂直線爲集UIViews的實現。果然,這些垂直線視圖可以很容易地用圖像視圖取代以定製外觀。 每次用戶鍋:

  • 我修改所有的垂直線的frame.origin.x意見
  • 如果一些看法熄滅屏幕 - 我刪除它們
  • 如果有上一個缺口左邊或右邊我創建新的視圖,以適應這個地方

當用戶完成平移手勢,我開始重複NSTimer(類似0.05秒),以動畫減速車輪運動。上簡而言之計時器的每個環路:

  • 計算距離以移動線和移動它們
  • 計算速度減速量並調整速度

幾個問題:

  1. 有沒有比我使用的UIKit API更適合實現這些任務的iOS框架(例如CoreGraphics,CoreAnimation,UIKitDynamics)?
  2. 你能否提出一個更好/更正確的方法來實現「無限滾動輪」控制?
  3. 你可以建議一個更好的方式來實現減速後用戶完成平移車輪?

感謝

+3

您是否使用滾動視圖來管理平移和減速,並根據代理回調中更改的內容偏移更新內容? – Wain

+0

您能否在一些更詳細的信息中描述(模擬無限滾動,移動內容)以便我能夠接受? –

回答

0

我已經通過定製SSRollingButtonScrollView了我的 「無限滾動輪」 控制。我想你應該看一次。我希望它能幫助你。

0

蘋果已經有一個很好的加速和減速算法 - UIScrollView。而且你可以在幕後使用它來控制其他視圖/交互。這是通過將滾動視圖中的平移手勢連接到另一個視圖並充當滾動視圖的代表來啓用的。

查看Enhancing User Experience with Scroll Views WWDC video的指導。

+0

感謝您的回答。你能分享一下這個概念的最簡單的實現嗎?我假設它應該動態地創建/刪除UIViews,就像一個UITableView。可能是實現類似於數據源的包裝器的一個好主意。或者它可能需要跟蹤滾動位置,並將其設置爲最後/第一項當達到任何一端 –

+0

我已經添加了粗略的UIScrollView +數據源的實現;我會很感激,如果你可以添加循環滾動視圖的邏輯。 https://github.com/truemetal/UIScrollView-InfiniteScrolling –