一、实现效果

实现图片的自动轮播

          

二、实现代码

storyboard中布局

代码:

 #import "ViewController.h"
#define HMImageCount 5
@interface ViewController ()<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
@property (nonatomic, strong) NSTimer *timer;
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; CGFloat imageW = self.scrollView.bounds.size.width;
CGFloat imageH = self.scrollView.bounds.size.height;
CGFloat imageY = ;
CGFloat imageX = ;
for (NSInteger i = ; i < HMImageCount; i++) {
UIImageView *imageView = [[UIImageView alloc] init];
// 拼接图片名称
NSString *imageName = [NSString stringWithFormat:@"img_%02ld", i + ];
imageView.image = [UIImage imageNamed:imageName];
// 计算图片的X
imageX = imageW * i;
imageView.frame = CGRectMake(imageX, imageY, imageW, imageH);
// 把每一张图片添加到scrollView中
[self.scrollView addSubview:imageView];
} // 1.设置scrollView的滚动范围
self.scrollView.contentSize = CGSizeMake(imageW * HMImageCount, );
// 2.设置分页
self.scrollView.pagingEnabled = YES;
// 3.隐藏水平滚动条
self.scrollView.showsHorizontalScrollIndicator = NO;
// 4.隐藏垂直滚动条
self.scrollView.showsVerticalScrollIndicator = NO; // 设置总页数
self.pageControl.numberOfPages = HMImageCount;
// 设置当前在第几页
self.pageControl.currentPage = ;
// 设置指示器在当前页的时候颜色
self.pageControl.currentPageIndicatorTintColor = [UIColor purpleColor];
// 默认的颜色
self.pageControl.pageIndicatorTintColor = [UIColor yellowColor]; // 5.设置srollView的代理
self.scrollView.delegate = self; // 6.添加定时器
[self timer]; } - (void)nextPage {
// 1.获取当前页码
NSInteger page = self.pageControl.currentPage;
// 2.判断是不是最后一页
if (page == HMImageCount - ) {
// 如果是最后一页就回到第0页
page = ;
} else {
// 如果不是最后一页
page++;
}
// 3.用每页的宽度 * (页码+1) == 计算除了下一页的contentoffset.x
CGFloat offsetX = page*self.scrollView.frame.size.width;
// 4.设置UIScrollView的contentoffset等于新的偏移值
[self.scrollView setContentOffset:CGPointMake(offsetX, ) animated:YES];
} // 实现scrollView滚动的方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { //如何计算当前滚动到了第几页
// 1.获取滚动的x方向的偏移量
CGFloat offsetX = self.scrollView.contentOffset.x;
offsetX = offsetX + self.scrollView.frame.size.width/;
// 2.用x方向的偏移量除以一张图片的宽度,取商就是当前滚动到了第几页
int page = offsetX/self.scrollView.frame.size.width;
//3.将页码赋值给UIPageControl
self.pageControl.currentPage = page; } // 开始拖拽
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
// 让定时器停止
[self.timer invalidate];
self.timer = nil;
} // 停止拖拽的时候开启定时器
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { [self timer];
} - (NSTimer *)timer {
if (_timer == nil) { // 通过scheduledTimerWithTimeInterval这个方法创建的计时器控件,创建好以后自动启动
_timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(nextPage) userInfo:nil repeats:YES];
// 把当前的定时器添加到当前的运行循环中,并指定它为通用模式,这样主线程在执行的时候就可以抽那么一点时间来关注一下我们的定时器---修改NSTimer的优先级与其他控件一样
[[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];
}
return _timer;
}
@end

提示:以下两个属性已经和storyboard中的控件进行了连线。

@property (weak, nonatomic) IBOutlet UIScrollView *scrollview;

@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;

补充:定时器NSTimer

定时器 适合用来隔一段时间做一些间隔比较长的操作

NSTimeInterval:多长多件操作一次

target :操作谁

selector : 要操作的方法

userInfo: 传递参数

repeats: 是否重复

self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];

iOS UI-UIScrollView控件实现图片轮播 (UIPageControl-分页指示器)的更多相关文章

  1. iOS开发UI篇—UIScrollView控件实现图片轮播

    iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播            二.实现代码 storyboard中布局 代码: #import "YYV ...

  2. 【转】 iOS开发UI篇—UIScrollView控件实现图片轮播

    原文:http://www.cnblogs.com/wendingding/p/3763527.html iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播 ...

  3. UIScrollView控件实现图片轮播

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

  4. iOS开发UI篇—UIScrollView控件实现图片缩放功能

    iOS开发UI篇—UIScrollView控件实现图片缩放功能 一.缩放 1.简单说明: 有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对 ...

  5. iOS开发项目实战——Swift实现图片轮播与浏览

    近期開始开发一个新的iOS应用,自己决定使用Swift.进行了几天之后,发现了一个非常严峻的问题.那就是无论是书籍,还是网络资源,关于Swift的实在是太少了,随便一搜全都是OC实现某某某功能.就算是 ...

  6. UIScrollView控件实现图片缩放功能

    转发自:http://www.cnblogs.com/wendingding/p/3754268.html 一.缩放 1.简单说明: 有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScr ...

  7. ios开发图片轮播器以及定时器小问题

    一:图片轮播器效果如图:能实现自动轮播,到最后一页时,轮播回来,可以实现拖拽滚动 二:代码: #import "ViewController.h" ; @interface Vie ...

  8. 不同手机根据坐标计算控件、图片的像素,px 与 dp, sp换算公式?

    参考该帖子:http://www.cnblogs.com/bluestorm/p/3640786.html PPI = Pixels per inch,每英寸上的像素数,即 "像素密度&qu ...

  9. iOS开发UI篇—UIScrollView控件介绍

    iOS开发UI篇—UIScrollView控件介绍 一.知识点简单介绍 1.UIScrollView控件是什么? (1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限 ...

随机推荐

  1. SNMP学习笔记之SNMP 原理与实战详解

    原文地址:http://freeloda.blog.51cto.com/2033581/1306743 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法 ...

  2. C++设计模式 之 “数据结构” 模式:Composite、Iterator、Chain of Resposibility

    "数据结构"模式 常常有一些组件在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用.这时候,将这些特定数据结构封装在内部,在外部提供统一的接口, ...

  3. 实现windows命令提示符的tab补全

    1:使用win+r打开 运行 控制台 2:输入 regedit 打开注册表 3:进入 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\C ...

  4. noip 2012 提高组 day2 部分题解

    这道题有多种解法,我用的是扩展欧几里得算法求到的答案 #include<iostream> #include<fstream> #include<cstdio> u ...

  5. linux下精确替换某个字符串

    1.linux下精确替换某个字符串 sed -i 's/\<old\>/new/g' filename.txt 2.举例: 2.1有个文件名为filename.txt,内容如下: newd ...

  6. P4303 [AHOI2006]基因匹配 未完成

    题目 luogu 暴力60pts部分 显然如果没有出现次数==5的条件 显然是\(N_{2}\)的求lcs的模板 但是加点条件就完全不同了 思路 这个题短小精悍,不想数据结构那么傻逼无脑 我们考虑一下 ...

  7. hdu4719 Oh My Holy FFF 线段树优化dp

    思路 好久之前的了,忘记什么题目了 可以到我这里做luogu 反正就是hdu数据太水,导致自己造的数据都过不去,而hdu却A了 好像是维护了最大值和次大值,然后出错的几率就小了很多也许是自己写错了,忘 ...

  8. 打印图形|2014年蓝桥杯B组题解析第五题-fishers

    打印图形 小明在X星球的城堡中发现了如下图形和文字: rank=3 rank=5 rank = 6 小明开动脑筋,编写了如下的程序,实现该图形的打印. 答案:f(a, rank-1, row, col ...

  9. 快速排序|2018年蓝桥杯B组题解析第五题-fishers

    标题:快速排序 以下代码可以从数组a[]中找出第k小的元素. 它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的. 请仔细阅读分析源码,填写划线部分缺失的内容. #include <s ...

  10. input标签type=button时,如何禁用和开启按钮

    本文为博主原创,未经允许不得转载: <input id="exportCameraButton" type="button" class="bt ...