ios 图片自动轮播

#import "NYViewController.h"#define kImageCount 5@interface NYViewController () <UIScrollViewDelegate>
@property (nonatomic, strong) UIScrollView *scrollView;
@property (nonatomic, strong) UIPageControl *pageControl;@property (nonatomic, strong) NSTimer *timer;
@end@implementation NYViewController//懒加载加载scrollView
-(UIScrollView *)scrollView
{if (_scrollView == nil) {_scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(10, 20, 300, 130)];_scrollView.backgroundColor = [UIColor redColor];[self.view addSubview:_scrollView];//contentSize//高度为0 只水平滚动self.scrollView.contentSize = CGSizeMake(kImageCount * _scrollView.bounds.size.width, 0);//取消弹簧效果_scrollView.bounces = NO;//取消滚动条_scrollView.showsHorizontalScrollIndicator = NO;//水平_scrollView.showsVerticalScrollIndicator = NO;//竖直//要分页_scrollView.pagingEnabled = YES;//设置代理_scrollView.delegate = self;}return _scrollView;
}-(UIPageControl *)pageControl
{if (_pageControl == nil) {//分页控件,本质上和scrollView没有任何关系,是两个独立的控件_pageControl = [[UIPageControl alloc]init];//总页数_pageControl.numberOfPages = kImageCount;//控件尺寸CGSize size = [_pageControl sizeForNumberOfPages:kImageCount];_pageControl.bounds = CGRectMake(0, 0, size.width, size.height);_pageControl.center = CGPointMake(self.view.center.x, 130);//设置颜色_pageControl.pageIndicatorTintColor = [UIColor redColor];_pageControl.currentPageIndicatorTintColor = [UIColor blackColor];[self.view addSubview:_pageControl];//添加监听方法/**在OC中,绝大多数“继承UIControl控件”,都可以监听UIControlEventValueChanged事件,只有button除外,button是点得,是touchup。。。*/[_pageControl addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];}return _pageControl;
}//分页控件的监听方法
-(void)pageChanged:(UIPageControl *)page
{//根据页数,调整滚动视图中得图片位置contentOffsetCGFloat x = page.currentPage * self.scrollView.bounds.size.width;[self.scrollView setContentOffset:CGPointMake(x, 0) animated:YES];
}- (void)viewDidLoad
{[super viewDidLoad];//设置图片for (int i = 0; i<kImageCount; i++) {NSString *imageName = [NSString stringWithFormat:@"img_%02d", i+1 ];UIImage *image = [UIImage imageNamed:imageName];UIImageView *imageView = [[UIImageView alloc] initWithFrame: self.scrollView.bounds];imageView.image = image;[self.scrollView addSubview:imageView];}//计算imageView的位置[self.scrollView.subviews enumerateObjectsUsingBlock:^(UIImageView *imageView, NSUInteger idx, BOOL *stop) {//调整x =》 origin =》frameCGRect frame = imageView.frame;frame.origin.x = idx * frame.size.width;imageView.frame = frame;}];//分页初始页数为0self.pageControl.currentPage = 0;//启动时钟
    [self startTimer];}/**启动时钟*/
-(void)startTimer
{self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];//添加运行循环
    [[NSRunLoop currentRunLoop]addTimer:self.timer forMode:NSRunLoopCommonModes];}-(void)updateTimer
{//页号发生变化//(当前页数 + 1) % 总页数int page = (self.pageControl.currentPage+1) % kImageCount;self.pageControl.currentPage = page;//调用监听方法。让滚动视图滚动
    [self pageChanged:self.pageControl];
}#pragma mark - scrollView的代理方法//滚动视图停下来
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{// 停下来的当前页数,通过contentOffset获取当前偏移量NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));//计算页数int page = scrollView.contentOffset.x/scrollView.bounds.size.width;self.pageControl.currentPage = page;}/**抓住图片时,停止时钟,松手后,开启时钟*/
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{//停止时钟,停止后就不能在使用,如果要启用时钟,需要重新实例化
    [self.timer invalidate];
}-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{//启动时钟
    [self startTimer];}
@end

posted on 2015-07-30 17:48 高手superior 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/jackson-leung/p/4690080.html

ios 图片自动轮播相关推荐

  1. iOS实现图片自动轮播展示

    一.需要实现的效果如下图1,首页图片自动轮播展示,其中图片从网络异步加载,加载过程用风火轮显示加载中,如图2. 本文参考了以下博客文章: http://www.haodaima.net/art/268 ...

  2. 广告图片自动轮播控件

    2019独角兽企业重金招聘Python工程师标准>>> 自定义广告轮播 自定义控件ImageCycleView 每个广告页的对象(包含具体显示图片.内容.id等) 自定义广告控件 I ...

  3. java图片轮播_java制作广告图片自动轮播控件

    首页图片的轮播 /** * 广告图片自动轮播控件 * */ public class ImageCycleView extends LinearLayout { /** * 上下文 */ privat ...

  4. JavaScript实现图片自动轮播

    目录 1.轮播图片 1.1图片切换功能 1.2定时器功能 1.3图片自动轮播实现 2.页面定时弹出广告 2.2 技术分析 2.3步骤分析 2.4代码实现 3.表单校验 3.1需求分析 3.2技术分析 ...

  5. 怎样实现banner自动播放html,纯CSS3实现banner图片自动轮播效果方式总结

    自动轮播: 实现切换图片,图片循环播放:鼠标悬停某张图片, 则暂停切换.css 方法一.opacity控制透明度实现轮播效果 依照需求咱们选择用CSS3的animation动画进行实现:transit ...

  6. html5时间线图片自动轮播,js实现自动播放匀速轮播图

    本文实例为大家分享了js实现自动播放匀速轮播图的具体代码,供大家参考,具体内容如下 函数封装:( 匀速运动函数) function animate(obj,target,step,speed){ cl ...

  7. 自动图片轮播php源码,js图片自动轮播代码分享(js图片轮播)

    1.利用图片width显示位置来播放图片,技术:.offsetWidth .aBtn[i].index = i .setInterval() .oUl[0].style.left =  .onclic ...

  8. JQuery实现图片自动轮播左右切换鼠标移入

    首先 轮播的精髓就是在于图片的平滑滚动,下面图片应该能一下就看明白: 第一 我们将可视区控制在我们想呈现的内容的大小 第二 接着是在可视区内放入内容(图片): 第三 JQ效果实现 , 中下方小圆点(按 ...

  9. php中实现图片自动轮播,轻松实现javascript图片轮播特效_javascript技巧

    本文实例介绍了javascript图片轮播特效的详细代码以及实现思路,分享给大家供大家参考,具体内容如下 还是先来看一看效果图: 具体代码: 一.HTML代码分析 此效果的层次结构比较清楚: 1. c ...

最新文章

  1. SpringBoot整合Grpc实现跨语言RPC通讯
  2. R语言ggplot2可视化箱图(boxplot)时忽视异常值(outlier)并重新分配坐标轴的范围是的可视化的箱图可以有效显示箱体实战
  3. java垃圾回收机制_JVM的垃圾回收机制——垃圾回收算法
  4. gdb中看内存(x命令)
  5. Android-FixBug热修复框架的使用及源码分析(不发版修复bug)
  6. 工业POE交换机使用中的常见问题汇总
  7. oracle分区表带入SQL语句,Oracle 分区表常用SQL语句 (转载)
  8. Maven构建分布式项目时子模块相互依赖打包技巧
  9. python字典文件,python-文件转字典,字典转文件
  10. php v9 邮箱登陆,PHPCMS v9会员登录支持Email登录的实现方法
  11. php中怎么让图片没有缓存,关于项目中图片缓存的问题
  12. RPC理论以及Dubbo的使用介绍
  13. 一段经典的 Java 风格程序 ( 类,包 )
  14. 用React实现基于Canvas的图片放大镜功能
  15. python扫描局域网ip_Python实现扫描局域网活动ip
  16. win7 去掉快捷方式小箭头
  17. Spark Container killed by YARN for exceeding memory limits. 11.1 GB of 11 GB physical memory used
  18. matlab调用CVX工具包
  19. 《精力管理》读书笔记——第二部分
  20. 用DTM实现网页转化跟踪,广告投放效果实时监测

热门文章

  1. 联合索引最左匹配原则成因
  2. Python gRPC 安装
  3. 关于C语言中的数组指针、指针数组以及二级指针
  4. Eclipse的编码
  5. oracle sqlserver 查看指定用户下面的表
  6. github下载源码也用命令进行安装包的联系
  7. Pytorch实现MNIST(附SGD、Adam、AdaBound不同优化器下的训练比较) adabound实现
  8. Conversion error:Jekyll::Converters::Scss encountered an error while converting css/main.scss
  9. 将人工智能模型压缩到微控制器中
  10. 各种经典透镜投影模型