一、实现效果

实现图片的自动轮播

          

二、实现代码

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. Python3 Selenium自动化测试赋值出现:WebDriverException: Message: unknown error: call function result missing 'value'

    Python3 Selenium自动化测试赋值出现:WebDriverException: Message: unknown error: call function result missing ' ...

  2. 03: KindEditor (HTML可视化编辑器)

    目录: 1.1 kindEditor常用配置参数 1.2 kindEditor下载与文件说明 1.3 kindEditor实现上传图片.文件.及文件空间管理 1.1 kindEditor常用配置参数返 ...

  3. IE6里样式表不起作用解决方法

    写的html页面引用外部css文件的时候在IE7,IE8和FF中能正常作用,即能正常显示,可在IE6中却完全没有作用到,即css文件里的样式根本未被解析到我们的html页面,这是什么原因? 开 始把c ...

  4. 括号序和dfs序

    记得清北讲过括号序和dfs序,忘记了 dfs序 dfs序就是dfs的顺序,这个好记 就是在dfs遍历树的时候,将每个结点开始时记录一次,结束时记录一次 而且一个子树可以表示为连续的一段, 只有子树操作 ...

  5. P1349 广义斐波那契数列(矩阵加速)

    P1349 广义斐波那契数列 题目描述 广义的斐波那契数列是指形如an=pan-1+qan-2的数列.今给定数列的两系数p和q,以及数列的最前两项a1和a2,另给出两个整数n和m,试求数列的第n项an ...

  6. JavaScript:正则表达式 前瞻 找位置

    js中全部都是顺序环视 顺序环视匹配过程 对于顺序肯定环视(?=Expression)来说,当子表达式Expression匹配成功时,(?=Expression)匹配成功,并报告(?=Expressi ...

  7. 啤酒和饮料|2014年蓝桥杯B组题解析第一题-fishers

    啤酒和饮料|2014年第五届蓝桥杯B组题解析第一题-fishers 啤酒和饮料 啤酒每罐2.3元,饮料每罐1.9元.小明买了若干啤酒和饮料,一共花了82.3元. 我们还知道他买的啤酒比饮料的数量少,请 ...

  8. VS中sln和suo的区别

    1.调试程序出现这个错误an error occurred while validating 解决方案:http://stackoverflow.com/questions/8648428/an-er ...

  9. 【分布式计算】30分钟概览Spark分布式计算引擎

    本文主要帮助初学者快速了解Spark,不会面面俱到,但核心一定点到. Spark是继Hadoop之后的下一代分布式内存计算引擎,于2009年诞生于加州大学伯克利分校AMPLab实验室,现在主要由Dat ...

  10. org.apache.shiro.session.InvalidSessionException: java.lang.IllegalStateException: getAttribute: Session already invalidated] with root cause

    1.遇到以下异常,找了好长时间,终于解决,报的异常如下: 七月 07, 2017 3:02:16 下午 org.apache.catalina.core.StandardWrapperValve in ...