您的位置:首页 > 移动开发 > IOS开发

iOS开发手写分页

2016-01-28 15:13 447 查看
#pragma mark -
//当用户开始拖拽的时候就调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
[self removeNSTimer];
}
//当用户停止拖拽的时候调用
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
[self addNSTimer];
}
//设置页码
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSInteger page;
if (self.aBanner.count) {
page = (NSInteger)(scrollView.contentOffset.x/scrollView.frame.size.width+0.5) % self.aBanner.count;
}
self.pageControl.currentPage = page;
}

#pragma mark -
//添加定时器
- (void)addNSTimer
{
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:TimeInterval
target:self
selector:@selector(nextPage)
userInfo:nil
repeats:YES];
//添加到runloop中
[[NSRunLoop mainRunLoop]addTimer:timer forMode:NSRunLoopCommonModes];
self.timerN = timer;
}

//删除定时器
- (void)removeNSTimer
{
[self.timerN invalidate];
self.timerN = nil;
}

//自动滚动
- (void)nextPage
{
//1获取当前正在展示的位置
NSIndexPath *currentIndexPath=[[self.collectionView indexPathsForVisibleItems]lastObject];

//马上显示回最中间那组的数据
NSIndexPath *currentIndexPathRest=[NSIndexPath indexPathForItem:currentIndexPath.item
inSection:YYMaxSections/2];
[self.collectionView scrollToItemAtIndexPath:currentIndexPathRest
atScrollPosition:UICollectionViewScrollPositionLeft
animated:NO];

//2计算出下一个需要展示的位置
NSInteger nextItem=currentIndexPathRest.item+1;
NSInteger nextSection=currentIndexPathRest.section;
if (nextItem == self.aBanner.count) {
nextItem = 0;
nextSection++;
}
NSIndexPath *nextIndexPath=[NSIndexPath indexPathForItem:nextItem
inSection:nextSection];

//3通过动画滚动到下一个位置
[self.collectionView scrollToItemAtIndexPath:nextIndexPath
atScrollPosition:UICollectionViewScrollPositionLeft
animated:YES];

//4)设置页码
self.pageControl.currentPage = nextItem;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: