我找到了一个循环滚动视图的好解决方案,但我也使用 UIPageControl 来显示实际页面的编号。
我在滚动视图滚动时更改 pageControl.currentPage 属性,因此如果滚动滚动视图超过一半,则 pageControl 会显示新页面。我想保留此功能,但我的实际代码 pageNumber 不正确。我想我应该使用这个:https ://github.com/gblancogarcia/GBInfiniteScrollView 但我不能让它工作......
这是我的代码:
-(void)rotateIfNecessary{
if(scrollView.contentOffset.x == 0) {
CGPoint newOffset = CGPointMake(scrollView.bounds.size.width+scrollView.contentOffset.x, scrollView.contentOffset.y);
[scrollView setContentOffset:newOffset];
[self rotateViewsRight];
}
else if(scrollView.contentOffset.x == (scrollView.contentSize.width - scrollView.frame.size.width) ) {
CGPoint newOffset = CGPointMake(scrollView.contentOffset.x-scrollView.bounds.size.width, scrollView.contentOffset.y);
[scrollView setContentOffset:newOffset];
[self rotateViewsLeft];
}
}
-(void)rotateViewsRight {
NSMutableArray* controllers = [DashboardFrameUtil getFrameViewControllers];
DashboardFrameViewController *endView = [controllers lastObject];
[controllers removeLastObject];
[controllers insertObject:endView atIndex:0];
[self resizePages];
}
-(void)rotateViewsLeft {
NSMutableArray* controllers = [DashboardFrameUtil getFrameViewControllers];
DashboardFrameViewController *endView = [controllers firstObject];
[controllers removeObjectAtIndex:0];
[controllers addObject:endView];
[self resizePages];
}
然后我调用rotateIfNecessary
我的scrollViewDidEndDecelerating
,一切正常,但页面计算..(当滚动视图调整自身大小时,它调用scrollViewDidScroll
我计算 pageNumber 的位置:
CGFloat pageWidth = scrollView.frame.size.width;
int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
pageControl.currentPage = page;
当 scrollView 循环时,pageControl 不显示正确的页码。任何想法?
先感谢您!