1. 程式人生 > >設定UIScrollView滾動速度.

設定UIScrollView滾動速度.

首先,我們公司的輪播圖有點BUG.使用UICollectionView重寫之後,發現一個問題.

就是.UICollectionView定位需要UICollectionViewFlowLayout類中的下面的方法.

- (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity

然而使用這個方法的時候如果pagingEnabled設定為YES,那麼系統計算的位置會覆蓋你的位置.pagingEnabled為NO的時候.通過上面的方法把位置計算正確的之後.發現.如果拖動的範圍比較小.返回中線的速度還比較快.當返回距離比較長的時候.返回的速度就變得十分的慢了.

重點來了,如何在禁用pagingEnabled的情況下使用pagingEnabled的效果

看起來pagingEnabled效果十分的高大上,其實,在自己寫框架玩的時候也深刻的感受到,這種BOOL值一般都是依賴了一些已有的屬性,那麼自然而然的發現pagingEnabled的效果和自己寫的效果的不同僅僅在於滾動的速度不同.那麼,目標就變成了找尋UICollectionView的滾動速度了.

搜了半天沒搜到speed有關的.但是,我找到了decelerationRate

@property(nonatomic)         UIScrollViewDecelerationRate decelerationRate NS_AVAILABLE_IOS(3_0);

這個屬性:減速速率

UIKIT_EXTERN const UIScrollViewDecelerationRate UIScrollViewDecelerationRateNormal NS_AVAILABLE_IOS(3_0);
UIKIT_EXTERN const UIScrollViewDecelerationRate UIScrollViewDecelerationRateFast NS_AVAILABLE_IOS(3_0);

一個正常,一個快速,那麼我們現在肯定是正常咯.如下設定之後完美解決問題

	self.collectionView.decelerationRate = UIScrollViewDecelerationRateFast;