2009-11-16 52 views
1

我正在實現類似於包含數據行的表視圖的視圖。我想要做的是滾動後,每行對齊到一組正確的位置,以便頂部和底部行的邊界完全可見 - 而不是像平時一樣進行修剪。有沒有辦法在滾動開始之前獲取滾動目標?這樣我就可以修正最後的y位置,例如,以行高的倍數。如何在滾動後設置/維持UIScrollView內容的靜止位置

回答

3

幾周前我問same question

確定沒有公共API來確定滾動減速的最終靜止Y偏移量。在進一步研究之後,我無法弄清楚蘋果如何管理減速的公式。我從滾動事件中收集了大量數據,記錄了開始速度以及減速行進的距離,並從中對可能停止的位置做了一些粗略估計。

我的目標是提前在那裏將停止,並減速轉換成具體的轉會偏移預測好。這種技術的問題在於,scrollRectToVisible:animated:總是在一段時間內發生,所以用戶所期望的速度不是用戶期望的速度,而是要快得多或慢得多,這取決於輕彈的強度。

另一種選擇是觀察減速度並等到它減速到某個閾值,然後調用scrollRectToVisible:animated:,但即使這樣也很難「恰到好處」。

第三個選擇是等到減速自行完成,檢查,看它是否發生在停在您需要的偏移多,如果沒有的話調整。我個人並不在乎,因爲你要麼停下來然後加速,要麼滑行到停止,反向。

+0

+1很好的答案。我加你可以如何與iOS5的使用應答['scrollViewWillEndDragging:withVelocity:targetContentOffset:'](http://developer.apple.com/library/IOS/documentation/UIKit/Reference/UIScrollViewDelegate_Protocol/Reference/UIScrollViewDelegate.html# // apple_ref/DOC/UID/TP40006923-CH3-SW15)。 – Sam

相關問題