UIScrollView控件实现图片轮播
http://www.cnblogs.com/dyf520/p/3805297.html
一、实现效果
实现图片的自动轮播
          
二、实现代码
storyboard中布局

代码:

1 #import "YYViewController.h"
2
3 @interface YYViewController () <UIScrollViewDelegate>
4 @property (weak, nonatomic) IBOutlet UIScrollView *scrollview;
5 /**
6 * 页码
7 */
8 @property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
9
10 @property (nonatomic, strong) NSTimer *timer;
11 @end
12
13 @implementation YYViewController
14
15 - (void)viewDidLoad
16 {
17 [super viewDidLoad];
18
19 // 图片的宽
20 CGFloat imageW = self.scrollview.frame.size.width;
21 // CGFloat imageW = 300;
22 // 图片高
23 CGFloat imageH = self.scrollview.frame.size.height;
24 // 图片的Y
25 CGFloat imageY = 0;
26 // 图片中数
27 NSInteger totalCount = 5;
28 // 1.添加5张图片
29 for (int i = 0; i < totalCount; i++) {
30 UIImageView *imageView = [[UIImageView alloc] init];
31 // 图片X
32 CGFloat imageX = i * imageW;
33 // 设置frame
34 imageView.frame = CGRectMake(imageX, imageY, imageW, imageH);
35 // 设置图片
36 NSString *name = [NSString stringWithFormat:@"img_0%d", i + 1];
37 imageView.image = [UIImage imageNamed:name];
38 // 隐藏指示条
39 self.scrollview.showsHorizontalScrollIndicator = NO;
40
41 [self.scrollview addSubview:imageView];
42 }
43
44 // 2.设置scrollview的滚动范围
45 CGFloat contentW = totalCount *imageW;
46 //不允许在垂直方向上进行滚动
47 self.scrollview.contentSize = CGSizeMake(contentW, 0);
48
49 // 3.设置分页
50 self.scrollview.pagingEnabled = YES;
51
52 // 4.监听scrollview的滚动
53 self.scrollview.delegate = self;
54
55 [self addTimer];
56 }
57
58 - (void)nextImage
59 {
60 int page = (int)self.pageControl.currentPage;
61 if (page == 4) {
62 page = 0;
63 }else
64 {
65 page++;
66 }
67
68 // 滚动scrollview
69 CGFloat x = page * self.scrollview.frame.size.width;
70 self.scrollview.contentOffset = CGPointMake(x, 0);
71 }
72
73 // scrollview滚动的时候调用
74 - (void)scrollViewDidScroll:(UIScrollView *)scrollView
75 {
76 NSLog(@"滚动中");
77 // 计算页码
78 // 页码 = (contentoffset.x + scrollView一半宽度)/scrollView宽度
79 CGFloat scrollviewW = scrollView.frame.size.width;
80 CGFloat x = scrollView.contentOffset.x;
81 int page = (x + scrollviewW / 2) / scrollviewW;
82 self.pageControl.currentPage = page;
83 }
84
85 // 开始拖拽的时候调用
86 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
87 {
88 // 关闭定时器(注意点; 定时器一旦被关闭,无法再开启)
89 // [self.timer invalidate];
90 [self removeTimer];
91 }
92
93 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
94 {
95 // 开启定时器
96 [self addTimer];
97 }
98
99 /**
100 * 开启定时器
101 */
102 - (void)addTimer{
103
104 self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];
105 [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
106 }
107 /**
108 * 关闭定时器
109 */
110 - (void)removeTimer
111 {
112 [self.timer invalidate];
113 }
114 @end

提示:以下两个属性已经和storyboard中的控件进行了连线。
@property (weak, nonatomic) IBOutletUIScrollView *scrollview;
@property (weak, nonatomic) IBOutletUIPageControl *pageControl;
补充:定时器NSTimer
定时器 适合用来隔一段时间做一些间隔比较长的操作
NSTimeInterval:多长多件操作一次
target :操作谁
selector : 要操作的方法
userInfo: 传递参数
repeats: 是否重复
self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];
UIScrollView控件实现图片轮播的更多相关文章
- iOS开发UI篇—UIScrollView控件实现图片轮播
		
iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播 二.实现代码 storyboard中布局 代码: #import "YYV ...
 - 【转】 iOS开发UI篇—UIScrollView控件实现图片轮播
		
原文:http://www.cnblogs.com/wendingding/p/3763527.html iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播 ...
 - iOS UI-UIScrollView控件实现图片轮播 (UIPageControl-分页指示器)
		
一.实现效果 实现图片的自动轮播 二.实现代码 storyboard中布局 代码: #import "ViewController.h" #define HM ...
 - iOS开发UI篇—UIScrollView控件实现图片缩放功能
		
iOS开发UI篇—UIScrollView控件实现图片缩放功能 一.缩放 1.简单说明: 有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对 ...
 - UIScrollView,UIPageControl,UIImageView 实现图片轮播的效果
		
上一篇博客介绍了如何将XCode创立的项目提交到Git版本控制,这次就直接做一个图片轮播的展示demo,刚好可以把UIScrollView.UIPageControl.UIImageView这三个控件 ...
 - UIScrollView控件实现图片缩放功能
		
转发自:http://www.cnblogs.com/wendingding/p/3754268.html 一.缩放 1.简单说明: 有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScr ...
 - ios开发图片轮播器以及定时器小问题
		
一:图片轮播器效果如图:能实现自动轮播,到最后一页时,轮播回来,可以实现拖拽滚动 二:代码: #import "ViewController.h" ; @interface Vie ...
 - Android高级图片滚动控件,编写3D版的图片轮播器
		
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482089 大家好,好久不见了,最近由于工作特别繁忙,已经有一个多月的时间没写博 ...
 - Android图片轮播控件
		
Android广告图片轮播控件,支持无限循环和多种主题,可以灵活设置轮播样式.动画.轮播和切换时间.位置.图片加载框架等! 使用步骤 Step 1.依赖banner Gradle dependenci ...
 
随机推荐
- C#语法复习1
			
一.C#与.net框架 .net是语言无关的. 程序的执行流程: .net兼容语言的源代码文件 .net兼容编译器 程序集(公共中间语言(CIL)common intermediate languag ...
 - ios NSAttributedString 具体解释
			
ios NSAttributedString 具体解释 NSAttributedString能够让我们使一个字符串显示的多样化,可是眼下到iOS 5为止,好像对它支持的不是非常好,由于显示起来不太方便 ...
 - 从Nginx源代码谈大写和小写字符转化的最高效代码以及ASCII码表的科学
			
说起大写和小写字母转换.大家非常easy想起系统函数是不是,差点儿全部的编程语言都提供了这样的转换函数,可是你有没有想过这背后是怎么实现的? 让你写怎么实现? 我们都知道Nginx是眼下用的最多的Ht ...
 - 数据结构与算法之贪心算法 C++实现
			
1.基本思路:从问题的某一个初始解触发逐步逼近给定的目标,以尽可能快的求得更好的解. 当达到算法中某一步不能再继续前进时.就停止算法,给出近似值.也就是说贪心算法并不从总体最优考虑,它所作出的选择仅仅 ...
 - python处理blog文件数据
			
以下是Python数据处理的题目说明与要求: The attachment is a log file used to show running status of set-top-box, and ...
 - HashMap随机取值和迭代器取值的对比
			
一共四中方法,前两种是迭代器取值,后两种是随机取值,循环了5000万次,时间分别为:迭代器读取的速度大约是随机读取的速度的1.5倍,数据量越大,差距越明显. 另外,插入是读取的100倍左右的时间(这个 ...
 - XML复习笔记(复习资料为菜鸟教程里的XML教程)
			
XML 指可扩展标记语言(eXtensible Markup Language) XML 的设计宗旨是传输数据,而不是显示数据. XML 标签没有被预定义.您需要自行定义标签. XML 被设计为具有自 ...
 - 计算(!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]
			
(!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]] 一.JS运算符的优先级 首先要运用到的第一个 ...
 - JS是否确认提示 +页面跳转
			
JS友好提示 +页面跳转 function logout()...{if (confirm("你确定要注销身份吗?是-选择确定,否-选择取消"))...{window.locati ...
 - redis.Pool 配置
			
http://blog.csdn.net/xiaohu50/article/details/51606349