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

10-01 23:06