scrollView无限滚动,横屏和竖屏
来源:互联网 发布:学校晚上网络监控 编辑:程序博客网 时间:2024/06/03 15:58
图片无限滚动原理:
在可见的窗口外左右各创建一个复用的imageView。
假设每个imageView宽度是width1,每当滚屏的偏移量>=width1 或者 <=0时,刷新所有的imageView即可。
几个处理的关键点是:
1、滚屏的处理
//滚屏滚动时的代理-(void)scrollViewDidScroll:(UIScrollView *)scrollView{}//滚屏开始拖拽时的代理,在这里面需要停止定时器-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{}//滚屏停止拖拽时的代理,在这里需要开始定时器-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{}//与上一个方法类似,也要开始定时器。这两个方法区别是 :上边一个方法如果我手指离开滚屏,同时滚屏也停止滑动了,就会执行上边的方法-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{}
2、滚屏上imageView的数据源处理
//处理滚屏上的imageView ,dir:0:左或下,1:右或上-(void)dealWithCurrentImageViewWithDirection:(BOOL)dir{ if(!_isOneScrDealFinish) return; NSString *needInsertStr = nil; NSInteger index = 0; NSArray *currentArr = self.imageArr.count?self.imageArr:self.gropuUrlArr; if(dir){//向右、下滑 [self.currentImageArr removeLastObject]; NSString *firstStr = self.currentImageArr.firstObject; index = [currentArr indexOfObject:firstStr]; if(index==0){ needInsertStr = currentArr.lastObject; } else needInsertStr = currentArr[index-1]; [self.currentImageArr insertObject:needInsertStr atIndex:0]; //设置pageControll if(_pageControl.hidden == NO){ NSInteger curIndex = _pageControl.currentPage - 1; if(curIndex < 0) _pageControl.currentPage = _pageControl.numberOfPages-1; else _pageControl.currentPage = curIndex; } } else{//左、上滑 [self.currentImageArr removeObjectAtIndex:0]; NSString *lastStr = self.currentImageArr.lastObject; index = [currentArr indexOfObject:lastStr]; if(index == currentArr.count-1){ needInsertStr = currentArr.firstObject; } else needInsertStr = currentArr[index+1]; [self.currentImageArr addObject:needInsertStr]; //设置pageControll if(_pageControl.hidden == NO){ NSInteger curIndex = _pageControl.currentPage + 1; if(curIndex > _pageControl.numberOfPages-1) _pageControl.currentPage = 0; else _pageControl.currentPage = curIndex; } } BOOL isUrl = (self.imageArr.count == 0); for(NSInteger i=0;i<self.currentImageArr.count;i++){ UIImageView *imageView = self.contentImageViewArr[i]; NSString *str = self.currentImageArr[i]; if(isUrl){ [imageView sd_setImageWithURL:[NSURL URLWithString:str] placeholderImage:[UIImage imageNamed:_defaultImageStr]]; } else{ imageView.image = [UIImage imageNamed:str]; } } //将scrollView归位 if(_scrDirection == scr_horizonDirection) self.mainScr.contentOffset = CGPointMake(_avgWidth, 0); else self.mainScr.contentOffset = CGPointMake(0, _avgHeight); _isOneScrDealFinish = 1;}
github下载地址:https://github.com/JbWang-CN/scrollView.git
0 0
- scrollView无限滚动,横屏和竖屏
- ScrollView无限滚动
- unity ugui ScrollView无限滚动
- android 无限竖向自动滚动ScrollView
- iOS之scrollView分页无限滚动框架
- 无限滚动ScrollView两个View重用
- Android 实现无限滚动的ScrollView
- onActivityforresult 和 Scrollview滚动
- Android滚动截屏,ScrollView截屏
- EditText和ScrollView滚动冲突
- scrollView的滚动和缩放
- listView 和scrollView滚动位置
- ScrollView滚动视图和WebView
- 滚动条:ScrollView和HorizontalScrollView
- 无限滚动
- UIScrollView无限滚动和轮播效果
- Android滚动截屏,ScrollView截屏,Listview截屏,Recyclerview截屏
- Android滚动截屏,ScrollView截屏,Listview截屏,Recyclerview截屏
- js typeof的运用
- java日期类型总结
- java 堆栈的区别
- Android-调用系统粘贴板copy复制文本功能及复制文本到粘贴板
- STM32F4定时器 -- 定时中断
- scrollView无限滚动,横屏和竖屏
- FastRCNN 训练自己数据集(二)——修改读写接口
- ssm整合2 增删改
- Fragment+ScrollView+ListView冲突各种解决方法
- java,接口实例
- 《PCL点云库学习&VS2010(X64)》Part 30 空间中求一点到两点所构成的直线的距离
- angularJS中chekbox选中状态前后台交互传值和查看回值问题
- js转换json格式时间成字符串前台显示
- Spring—Quartz定时调度CronTrigger时间配置格式说明与实例