iOS 图片轮播图(自动滚动)

#import "DDViewController.h"

#define DDImageCount 5

@interface DDViewController ()<UIScrollViewDelegate>

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

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

//定时器

@property (nonatomic,strong)NSTimer *timer;

@end

@implementation DDViewController

- (void)viewDidLoad

{

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

// 设置一些固定的尺寸参数

CGFloat imageW = self.scrollView.frame.size.width;

CGFloat imageH = self.scrollView.frame.size.height;

CGFloat imageY = 0;

// 1.添加5张图片到scrollview中

for (int i=0; i<DDImageCount; i++) {

UIImageView *imageView = [[UIImageView alloc]init];

CGFloat imageX = i * imageW;

imageView.frame = CGRectMake(imageX, imageY, imageW, imageH);

imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"img_0%d",i+1]];

[self.scrollView addSubview:imageView];

}

// 2.设置内容尺寸

CGFloat contenW = DDImageCount * imageW;

// 水平滚动

self.scrollView.contentSize = CGSizeMake(contenW, 0);

// 上下滚动

//    self.scrollView.contentSize = CGSizeMake(0, XXXX);

// 3.隐藏水平滚动条

self.scrollView.showsHorizontalScrollIndicator = NO;

// 4.分页

self.scrollView.pagingEnabled = YES;

// 5.设置pagecontrol的总页数

self.pageControl.numberOfPages = DDImageCount;

// 6.添加定时器(每隔2秒调用一次self 的 nextImage的方法)

[self addTimer];

}

//添加定时器

- (void)addTimer

{

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

// 设置主线程。

[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];

}

//移除定时器

- (void)removertimer

{

[self.timer invalidate];

self.timer = nil;

}

- (void)nextImage

{

// 增加pagecontrol的页码

int page = 0;

if (self.pageControl.currentPage == DDImageCount - 1) {

page = 0;

}else{

page = self.pageControl.currentPage + 1;

}

// 计算scrollview滚动位置

CGFloat offsetX = page * self.scrollView.frame.size.width;

CGPoint offset = CGPointMake(offsetX, 0);

[self.scrollView setContentOffset:offset animated:YES];

}

//ScrollView代理方法。使用时要设置代理(self.delgate = self)或者在图片上进行设置

/**

*  当scrollView正在滚动就会调用

*/

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{

// 根据scrollview的滚动位置决定pagecontrol显示第几页

CGFloat scrollW = scrollView.frame.size.width;

int page = (scrollView.contentOffset.x + scrollW * 0.5) / scrollW;

self.pageControl.currentPage = page;

}

/**

*  开始拖拽的时候调用

*/

- (void) scrollViewWillBeginDragging:(UIScrollView *)scrollView

{

// 停止定时器(一旦定时器停止了,就不能再使用)

[self removertimer];

}

/**

*  停止拖拽的时候调用

*/

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

{

//开启定时器

[self addTimer];

}

iOS 图片轮播图(自动滚动)的更多相关文章

  1. IOS 图片轮播实现原理 (三图)

    IOS 图片轮播实现原理的一种 图片轮播所要实现的是在一个显示区域内通过滑动来展示不同的图片. 当图片较少时我们可以采用在滚动视图上添加很多张图片来实现. 但是如果图片数量较多时,一次性加载过多图片会 ...

  2. ios图片轮播效果

    代码地址如下:http://www.demodashi.com/demo/11959.html ImageCarousel 简单封装的图片轮播器 内存过大由于我加载的图片分辨率较高(4k) 文件目录 ...

  3. 图片轮播图插件的使用 unslider!!!

    1.百度图片轮播图unslider,第一个就会出现jquery unslider轮播图,点击进去,下载网站提供的文件,解压,内部有我们需要使用的各种js,图片等. 2.在自己的eclipse或者int ...

  4. iOS开发--轮播图

    在不少项目中,都会有图片轮播这个功能,现在网上关于图片轮播的框架层出不穷,千奇百怪,笔者根据自己的思路,用两个imageView也实现了图片轮播,这里说说笔者的主要思路以及大概步骤,具体代码请看这里, ...

  5. 【自定义轮播图】微信小程序自定义轮播图无缝滚动

    先试试效果,可以通过设置参数调整样式 微信小程序中的轮播图可以直接使用swiper组件,如下: <swiper indicator-dots="{{indicatorDots}}&qu ...

  6. BannerDemo【图片轮播图控件】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里简单记录下一个开源库youth5201314/banner的运用.具体用法请阅读<youth5201314/banner& ...

  7. iOS中 轮播图放哪最合适? 技术分享

    我们知道,轮播图放在cell或collectionViewCell上会影响用户层级交互事件,并且实现起来比较麻烦,现在推出一个技术点:答题思路是:将UIScrollView放在UIView或UICol ...

  8. android 使用图片轮播图---banner 使用

    转自:https://github.com/youth5201314/banner 使用步骤 Step 1.依赖banner Gradle dependencies{ compile 'com.you ...

  9. js图片轮播图

    /*焦点图*/        var Box='.carousel';//盒子        var Menu=$(Box+' .l_cursor li');//圆点菜单        var Con ...

随机推荐

  1. STL之list

    list是一个线性链表结构,它的数据由若干个节点构成,每一个节点都包括一个信息块,一个前驱指针和一个后驱指针.它无需分配指定的内存大小且可以任意伸缩,这是因为它存储在非连续的内存空间中,并且由指针将有 ...

  2. CNUOJ 0486 800401反质数

    难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 将正整数 x 的约数个数表示为 g(x).例如,g(1)=1,g(4)=3, g ...

  3. Model & ModelMap & ModelAndView 比较ModelFactory简介

    Model: 是一个接口,其实现类必继承ModelMap. ModelMap: 继承与LinkedHashMap,相当于自定义了一个map. ModelAndView: 里面封装了两个对象,其中vie ...

  4. 非常适用的Sourceinsight插件,提高效率事半功倍

    一直使用sourceinsight编辑C/C++代码,sourceinsight是一个非常好用的编辑工具可以任意定位,跳转,回退,本人一直 使用该工具做C/C++开发,sourceinsight能够满 ...

  5. vert.x学习(五),用StaticHandler来处理静态文件

    做web开发,css.js.图片等静态资源是必不可少的,那么vert.x又是怎么来加载这些静态资源呢.请看StaticHandler 编写HelloStaticResource.java packag ...

  6. RSA+DES动态加密

    RSA可以用于加密,其加密强度很高,被人攻克的可能性极小.但是其加密速度很慢,如果对一段长数据进行加密是不现实的.因为无论加密还是解密都需要很长时间.所以通常是先用对称加密算法(DES, AES等)对 ...

  7. DataTable/集合 转 Json

    前端用的jqueryUI框架获取json格式数据绑定显示表格. 后端通过WebService获取的数据是DataTable. 现将获取DataTable转Json,也支持将数据集合转Json. 一.项 ...

  8. linux suse系统防火墙端口开放配置

    1.切换到root用户下 2.进入到/etc/sysconfig/SuSEfirewall2 3.修改FW_SERVICES_EXT_TCP=" 22 80 8080 8081 8082 8 ...

  9. 解决点击cell时,UILabel的背景颜色消失的问题

    -(void)setSelected:(BOOL)selected animated:(BOOL)animated{ [super setSelected:selected animated:anim ...

  10. ftp应用

    ftp的基本应用: 下载easyfzs ftp,仿真模拟ftp服务器. 类库: using System; using System.Collections.Generic; using System ...