UIScrollView中的页面调度是一个很棒的功能,这里我需要将页面调度设置为更小的距离,例如,我希望UIScrollView的页面调度尺寸小于UIScrollView框架宽度。
谢谢
最佳答案
您可以使用UIScrollView
委托(delegate)方法。将您的类设置为滚动 View 的委托(delegate),然后实现以下内容:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
CGFloat kMaxIndex = 23;
CGFloat targetX = scrollView.contentOffset.x + velocity.x * 60.0;
CGFloat targetIndex = 0.0;
if (velocity.x > 0) {
targetIndex = ceil(targetX / (kCellWidth + kCellSpacing));
} else if (velocity.x == 0) {
targetIndex = round(targetX / (kCellWidth + kCellSpacing));
} else if (velocity.x < 0) {
targetIndex = floor(targetX / (kCellWidth + kCellSpacing));
}
if (targetIndex < 0)
targetIndex = 0;
if (targetIndex > kMaxIndex)
targetIndex = kMaxIndex;
targetContentOffset->x = targetIndex * (kCellWidth + kCellSpacing);
//scrollView.decelerationRate = UIScrollViewDecelerationRateFast;//uncomment this for faster paging
}
速度参数是必要的,以确保滚动感觉自然且在手指仍在移动时触摸结束时不会突然结束。单元格宽度和单元格间距是页面宽度和 View 中页面之间的间距。在这种情况下,我使用的是
UICollectionView
。