我有一个UICollection
已经实现并且有效,但我无法实现我想要的滚动。
以下是我UICollectionView
的图片,我已将250
的灰色单元格调整为250
。
我的问题是,当我开始滚动时,就会发生这种情况。
我的手机首先从最左边开始,但请注意如果我开始水平滚动会发生什么。
正如您所看到的,细胞之间的接缝向左移动越多,我滚动细胞越多。这不是我想要的。
我想要实现的是:细胞与中心对齐,当你滚动时,而不是细胞的中心越来越向左移动,我希望细胞留在中间。就像PageViewController
一样,除了我希望它是UICollectionViewCells
。
我尝试添加以下代码,例如:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
float pageWidth = 210;
float currentOffset = scrollView.contentOffset.x;
float targetOffset = targetContentOffset->x;
float newTargetOffset = 0;
if (targetOffset > currentOffset)
newTargetOffset = ceilf(currentOffset / pageWidth) * pageWidth;
else
newTargetOffset = floorf(currentOffset / pageWidth) * pageWidth;
if (newTargetOffset < 0)
newTargetOffset = 0;
else if (newTargetOffset > scrollView.contentSize.width)
newTargetOffset = scrollView.contentSize.width;
targetContentOffset->x = currentOffset;
[scrollView setContentOffset:CGPointMake(newTargetOffset, 0) animated:YES];
}
这实现了均匀滚动,但我希望启用paging
以及bounce
。
因为如果我启用paging
和bounce
,滚动非常流畅和优雅,但是如果我使用上面的代码,滚动非常粗糙和机械。
那么我怎样才能实现像苹果默认滚动一样平滑的滚动,我的UICollectionViewCell
位于中间?
如果我没有充分解释这个问题,这篇文章here解释了我的问题,除了我使用的是一个单元格而不是三个单元格,我希望滚动顺畅和弹跳等。
答案 0 :(得分:0)
我认为这应该有效(禁用分页):
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
if (!decelerate) {
// do your calculations
[scrollView setContentOffset:CGPointMake(newTargetOffset, 0) animated:YES];
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
// do your calculations
[scrollView setContentOffset:CGPointMake(newTargetOffset, 0) animated:YES];
}