設定UIScrollView滾動速度.
阿新 • • 發佈:2019-01-07
首先,我們公司的輪播圖有點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;