iOS-利用UIScrollView实现展示图片的无限滚动及自动滚动 - 郭晓
1 // 2 // GXViewController.m 3 // 自动滚动及无线循环 4 // 5 // Created by 郭晓 on 14-3-7. 6 // Copyright (c) 2014年 郭晓. All rights reserved. 7 // 8 9 #import "GXViewController.h" 10 11 #define kCount 6 //图片总张数 12 13 static long step = 0; //记录时钟动画调用次数 14 15 @interface GXViewController () <UIScrollViewDelegate> 16 { 17 UIScrollView *_scrollView; 18 UIImageView *_currentImageView; //当前视图 19 UIImageView *_nextImageView; //下一个视图 20 UIImageView *_previousView; //上一个视图 21 CADisplayLink *_timer; //定时器 22 23 BOOL _isDraging; //当前是否正在拖拽 24 } 25 26 @end 27 28 @implementation GXViewController 29 30 - (void)viewDidLoad 31 { 32 [super viewDidLoad]; 33 34 CGFloat width = self.view.bounds.size.width; 35 CGFloat height = self.view.bounds.size.height; 36 37 _scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds]; 38 _scrollView.contentSize = CGSizeMake(3 * width, 0); 39 _scrollView.showsHorizontalScrollIndicator = NO; 40 _scrollView.pagingEnabled = YES; 41 _scrollView.delegate = self; 42 _scrollView.bounces = NO; 43 _scrollView.contentOffset = CGPointMake(width, 0); 44 [self.view addSubview:_scrollView]; 45 46 //初始化当前视图 47 _currentImageView = [[UIImageView alloc] init]; 48 _currentImageView.image = [UIImage imageNamed:@"01.jpg"]; 49 _currentImageView.frame = CGRectMake(width, 0, width, height); 50 _currentImageView.contentMode = UIViewContentModeScaleAspectFill; 51 [_scrollView addSubview:_currentImageView]; 52 53 //初始化下一个视图 54 _nextImageView = [[UIImageView alloc] init]; 55 _nextImageView.image = [UIImage imageNamed:@"02.jpg"]; 56 _nextImageView.frame = CGRectMake(width * 2, 0, width, height); 57 _nextImageView.contentMode = UIViewContentModeScaleAspectFill; 58 [_scrollView addSubview:_nextImageView]; 59 60 //初始化上一个视图 61 _previousView = [[UIImageView alloc] init]; 62 _previousView.image = [UIImage imageNamed:@"06.jpg"]; 63 _previousView.frame = CGRectMake(0, 0, width, height); 64 _previousView.contentMode = UIViewContentModeScaleAspectFill; 65 [_scrollView addSubview:_previousView]; 66 67 // 时钟动画 68 _timer = [CADisplayLink displayLinkWithTarget:self selector:@selector(update:)]; 69 [_timer addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; 70 71 } 72 73 #pragma mark 时钟动画调用方法 74 - (void)update:(CADisplayLink *)timer 75 { 76 step++; 77 78 if ((step % 120 != 0) || _isDraging) { 79 return; 80 } 81 82 CGPoint offset = _scrollView.contentOffset; 83 84 offset.x += 320; 85 if (offset.x > 640) { 86 offset.x = 320; 87 } 88 89 [_scrollView setContentOffset:offset animated:YES]; 90 } 91 92 #pragma mark - 代理方法 93 #pragma mark 准备开始拖动 94 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 95 { 96 _isDraging = YES; 97 } 98 99 #pragma mark 视图停止滚动 100 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 101 { 102 _isDraging = NO; 103 step = 0; 104 } 105 106 #pragma mark 已经拖动 107 - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ 108 109 static int i = 1;//当前展示的是第几张图片 110 111 float offset = scrollView.contentOffset.x; 112 if (_nextImageView.image == nil || _previousView.image == nil) { 113 114 //加载下一个视图 115 NSString *imageName1 = [NSString stringWithFormat:@"0%d.jpg", i == kCount ? 1 : i + 1]; 116 _nextImageView.image = [UIImage imageNamed:imageName1]; 117 118 //加载上一个视图 119 NSString *imageName2 = [NSString stringWithFormat:@"0%d.jpg", i == 1 ? kCount : i - 1]; 120 _previousView.image = [UIImage imageNamed:imageName2]; 121 } 122 123 if (offset == 0) { 124 _currentImageView.image = _previousView.image; 125 scrollView.contentOffset = CGPointMake(scrollView.bounds.size.width, 0); 126 _previousView.image = nil; 127 128 if (i == 1) { 129 i = kCount; 130 }else{ 131 i -= 1; 132 } 133 134 } 135 136 if (offset == scrollView.bounds.size.width * 2) { 137 _currentImageView.image = _nextImageView.image; 138 scrollView.contentOffset = CGPointMake(scrollView.bounds.size.width, 0); 139 _nextImageView.image = nil; 140 141 if (i == kCount) { 142 i = 1; 143 }else{ 144 i += 1; 145 } 146 147 } 148 } 149 150 @end
iOS-利用UIScrollView实现展示图片的无限滚动及自动滚动 - 郭晓相关推荐
- iOS换一种思路写一个无限轮播的滚动视图
换一种思路写一个无限轮播的滚动视图 写这篇博客已经距离我当时写差不多有一个月时间了,也完善了很多,基本是没有bug的,如果有,不妨留言,喜欢的话,劳烦各位点个赞,不喜欢的,不妨看看思路,提提意见 1. ...
- iOS小技能: 利用UIScrollView实现图片放大预览,并支持缩小。
文章目录 前言 I 利用UIScrollView实现图片放大和缩小 1.1 UIScrollView 的缩放原理 1.2 使用方法 1.3 代码实现 II iOS小技能:查看大图浏览器(图片支持滑动切 ...
- iOS 两种不同的图片无限轮播
代码地址如下: http://www.demodashi.com/demo/11608.html 前记 其实想写这个关于无限轮播的记录已经很久很久了,只是没什么时间,这只是一个借口,正如:时间就像海绵 ...
- 使用Axure制作无限循环展示图片效果
一.实现的效果 如图: 1.此次需要实现的效果是,进入界面后,在图片展示区域的图片根据事先设定好的时间,自动切换不同的图片: 2.循环不间断: 3.页面不出现闪烁的现象. 二.做前工作 图片:4张 软 ...
- 分别利用opencv和matplotlib.pyplot来展示图片
众所周知,opencv是一个图像算法库,理论上讲我们应该使用opencv来展示图片,但本文要告诉你,什么时候我们使用matplotlib.pyplot来画图:需要对图像进行一些操作的时候(如看一下某些 ...
- HTML图片重叠变换,CSS实现图片无缝无限循环展示效果
只是想练练手,看看能不能实现在页面上放置一个能无限循环滚动的图片横幅.事实证明,这并不是很难. 先看实际效果: 无限循环滚动的关键是确定宽图片的位置 首先,这个图片的设计需要有一点技巧,就是它的首位部 ...
- Python 图像处理篇-利用opencv库展示本地图片实例演示
python 常用的图像处理技术有两种方法,一种是 opencv,另一种是 pytesseract. opencv 进行图像处理的话,我们需要安装 opencv-python 和 numpy 这两个库 ...
- ios scrollView中增加动画效果,自动滚动UIScrollView,利用了NSTimer
转载自:http://blog.csdn.net/z343929897/article/details/7974753 按照赵总要求,在首页上边需要加广告条,本来以为挺复杂的,原来挺简单 在类的申明文 ...
- iOS开发UIScrollView的底层实现
起始 做开发也有一段时间了,经历了第一次完成项目的激动,也经历了天天调用系统的API的枯燥,于是就有了探索底层实现的想法. 关于scrollView的思考 在iOS开发中我们会大量用到scrollVi ...
最新文章
- 10亿美元续命!OpenAI获微软投资,意在通用人工智能?
- 封装php连接数据库返回方法
- 图像窗口方面 window
- vue中组件在不同页面中渲染出错
- input checkbox 选择内容输出多少个
- web前端开发初学者十问集锦(1)
- 玩转html5(三)---智能表单(form),使排版更加方便
- macos怎么装mysql80_Mac下MySQL安装配置教程
- Swift 基础 高阶函数 forEach filter map compactMap compactMapValues flatMap reduce sort sorted shuffled ...
- Android蓝牙通信
- [高数][高昆轮][高等数学上][第一章-函数与极限]10.闭区间上连续函数的性质
- 2022 最新 JCR正式发布全球最新影响因子名单(前600名)
- Android文本输入框EditText属性和方法说明
- OSChina 周六乱弹 —— 女友是啥子哟?生命的最大负载?
- keep T 不是 KG等级_宅家锻炼堪比健身房,一对一“私教”,Keep 智能动感单车体验...
- 财税SaaS行业格局再变,慧算账为何能受资本“偏爱”?
- Vision Transformer 综述
- Python Tip挑战
- 给自己的应用程序添加系统偏好设置
- Linux - Ftp客户端安装、创建Ftp用户和登录
热门文章
- iOS 11.2 最新真机测试包(12.05)
- warning: #1300-D: XXX inherits implicit virtual 报警
- Jquery获取radio的状态
- 带你详细了解ADSS光缆
- antv g2plot可视化图表在vue中的使用之四:为图表添加事件
- com组件 安全提示_CDE 解读化学药品注射剂生产所用的塑料组件系统相容性研究技术指南(试行)...
- 做网络营销的心态与步骤
- QQ小程序流量主怎么开通的,流量主开通技巧。
- 版式设计与画册设计的关系
- 【Bugly干货分享】关于 Android N 那些你不知道的事儿