我试着找到这个问题一段时间,但没有找到这个问题的答案。我的问题是我有一个UICollectionView,滚动方向是带有Paging Enabled的Horizontal。我的问题是,我想保留用户所在的当前页码的大头针,所以我创建了一个int变量,现在想在用户每次向右或向左滑动时将其加减1。我试过使用scrollView的委托
- (void)scrollViewDidScroll:(UIScrollView *)scrollView但是当用户向右或向左滑动时,它被调用的次数与UICollectionView中一个页面上的列数加上它不会让我知道用户是转到下一个页面还是上一个页面。
发布于 2015-04-08 14:49:47
使用:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
CGFloat pageWidth = collectionView.frame.size.width;
float currentPage = collectionView.contentOffset.x / pageWidth;
if (0.0f != fmodf(currentPage, 1.0f))
{
pageControl.currentPage = currentPage + 1;
}
else
{
pageControl.currentPage = currentPage;
}
NSLog(@"Page Number : %ld", (long)pageControl.currentPage);
}如果您没有使用任何pageControl,那么ceil(currentPage)将是您当前的页码。
发布于 2016-03-24 07:49:57
根据@Shankar BS的回答,我在Swit中实现了如下代码。请记住,CollectionViewDelegate符合ScrollViewDelegate:
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let pageWidth = scrollView.frame.size.width
let page = Int(floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1)
print("page = \(page)")
}发布于 2015-04-08 15:09:58
你可以得到如下所示的当前页面,索引将是从0到(total page - 1)
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
CGFloat pageWidth = scrollView.frame.size.width;
int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
NSLog(@"Current page -> %d",page);
}https://stackoverflow.com/questions/29507675
复制相似问题