【发布时间】:2013-11-14 14:23:26
【问题描述】:
我找到了一个很好的解决方案来循环我的滚动视图,但我也使用 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];
}
然后我在scrollViewDidEndDecelerating 中调用rotateIfNecessary,一切正常,但是页面正在计算..(当滚动视图调整自身大小时,它调用scrollViewDidScroll 我计算pageNumber:
CGFloat pageWidth = scrollView.frame.size.width;
int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
pageControl.currentPage = page;
当滚动视图循环时,pageControl 不显示正确的页码。 有什么想法吗?
提前谢谢你!
【问题讨论】:
标签: ios objective-c loops uiscrollview scrollview