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. 温故而知新 兼容性较强的轮播器superslide.js

    官网: http://www.superslide2.com/index.html demo: http://www.superslide2.com/demo.html API: http://www ...

  2. O(n)线性筛选n以内的素数

    O(n)线性筛选n以内的素数 (1)对于任何一个素数p,都不可能表示为两个数的乘积 (2)对于任何一个合数m = p1a1p2a2…pmam,这里p1< p2 < … <pm,都能使 ...

  3. C fread

    fread是一个函数.从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功返回 0. 函数原型 size_t fread ( void ...

  4. Linux下搭建Windows KMS服务器

    这几天微软发布了Windows 10 RedStone 1 Build 14390, 于是我第一时间下载进行了试用.和之前那种不激活也没有任何异样不同,现在的版本如果不激活有些功能就受限了,比如你无法 ...

  5. soui中subscribeEvent订阅控件消息与宏订阅注意事项

    同一个控件,subscribeEvent与宏定义不能同时响应,优先响应sub 所以,同一个控件的同一个消息,要想在多个地方响应,就必须sub方式订阅

  6. ZooKeeper 配置

    # The number of milliseconds of each ticktickTime=2000 # The number of ticks that the initial# synch ...

  7. 单例模式-C++

    单例模式(Singleton) --本文内容部分引自<大话设计模式 Chapter21> 一.概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 通常我们可以让一个全局变量使一个 ...

  8. html5 css3 loading 效果

    canvas  html5load1 主要思路update  实现12个点的绘制和旋转效果 var update = function() { ctx.save();// 把当前绘图状态保存起来 ct ...

  9. MAC emacs下安装php-mode

    在某一个个页面(抱歉不记得了), 比较了三个配置,php-mode, php-mode-improved, xnhtml. 作者在比较后推荐xnhtml,但在xnthml官网下载链接一直显示403,真 ...

  10. 自动打开Accesibility Service 可以自动安装APP

    package com.venscor.helloworld;import java.io.BufferedReader;import java.io.IOException;import java. ...