#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;
}
iOS开发手写分页
最新推荐文章于 2022-03-17 18:09:12 发布