一、需要实现的效果如下图1,首页图片自动轮播展示,其中图片从网络异步加载,加载过程用风火轮显示加载中,如图2。

本文参考了以下博客文章:

http://www.haodaima.net/art/2687144
http://www.cnblogs.com/xiaobaizhu/archive/2012/12/18/2824255.html

图1

图2

二、需要用到的控件和工具:

(1)UIScrollView显示轮播图片

(2)UIPageControl显示页数

(3)UIActivityIndicatorView显示加载中的风火轮

(4)NSTimer控制自动轮播

(3)SDWebImage,第三方网络图片加载工具

三、实现代码

storyboard布局实现截图:

(1)初始化UIScrollView

-(void)initImageScrolView{self.scrollview.frame = CGRectMake(_scrollview.frame.origin.x, _scrollview.frame.origin.y, self.scrollview.frame.size.width, self.scrollview.frame.size.height);self.scrollview.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);CGFloat imageW = self.scrollview.frame.size.width;CGFloat imageH = self.scrollview.frame.size.height;// 图片的Y坐标CGFloat imageY = 0;// 图片总数NSInteger totalCount = [imageArr count];for (int i = 0; i < totalCount; i++) {UIImageView *imageView = [[UIImageView alloc] init];// 图片X坐标CGFloat imageX = i * imageW;// 设置frameimageView.frame = CGRectMake(imageX, imageY, imageW, imageH);// 设置图片[self createActivityView:imageView];// 隐藏水平和垂直指示条self.scrollview.showsHorizontalScrollIndicator = NO;self.scrollview.showsVerticalScrollIndicator=NO;NSString *imageUrlStr = [[NSString alloc] initWithFormat:@"%@%@",HttpURL,[imageArr objectAtIndex:i]];NSURL *imageUrl = [[NSURL alloc] initWithString:imageUrlStr];//使用SDWebImage[imageView sd_setImageWithURL:imageUrl placeholderImage:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL){[self stopActivityView:imageView];}];[self.scrollview addSubview:imageView];}// 设置scrollview的滚动范围CGFloat contentW = totalCount *imageW;//不允许在垂直方向上进行滚动self.scrollview.contentSize = CGSizeMake(contentW, 0);// 3.设置分页self.scrollview.pagingEnabled = YES;// 4.监听scrollview的滚动self.scrollview.delegate = self;self.pageControl.numberOfPages = totalCount;[self addTimer];
}

(2)方法1中调用的方法createActivityView和stopActivityView

- (void)createActivityView:(UIImageView*)img//创建风火轮
{static int size = 40;UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];activityView.frame = CGRectMake(img.frame.size.width/2 - size/2, img.frame.size.height/2 - size/2, size, size);[img addSubview:activityView];[activityView startAnimating];
}- (void)stopActivityView:(UIImageView*)img;//移除风火轮
{if (img.image != nil)for (UIView *view in [img subviews]) {//读出UIButton里的所有控件,再选择UIActivityIndicatorView进行更改if ([view isKindOfClass:[UIActivityIndicatorView class]]) {[view removeFromSuperview];//把风火轮UIActivityIndicatorView移除}}
}

(3)实现UIScrollViewDelegate 代理,并重写代理的以下三个回调函数

// scrollview滚动的时候调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {    CGFloat scrollviewW = scrollView.frame.size.width;CGFloat x = scrollView.contentOffset.x;int page = (x + scrollviewW / 2) / scrollviewW;self.pageControl.currentPage = page;
}// 开始拖拽的时候调用
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{// 关闭定时器(注意点; 定时器一旦被关闭,无法再开启)[self.timer invalidate];[self removeTimer];
}- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{ // 开启定时器[self addTimer];
}

(4)实现方法(3)中有关定时器函数

/*** 开启定时器*/
-(void)addTimer{self.timer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes]; }/*** 关闭定时器*/
- (void)removeTimer{[self.timer invalidate];
}

(5)完成,测试。

(6)已封装,快速集成:http://blog.csdn.net/dolacmeng/article/details/51177765

iOS实现图片自动轮播展示相关推荐

  1. ios 图片自动轮播

    ios 图片自动轮播 #import "NYViewController.h"#define kImageCount 5@interface NYViewController () ...

  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. iOS 自定义图片无限轮播控件

    一:简介 图片轮播功能在App中是一个非常常见的功能,即允许定时滚动,也允许拖拽滚动,也可以点击每张图片触发事件. 二:实现方式 图片轮播功能的实现方式有很多中, UIScrollView + N个U ...

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

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

最新文章

  1. 【Linux】一步一步学Linux——arpd命令(184)
  2. oraclde存储过程_Oracle存储过程详解(引用)+补充
  3. 【ST表】栈(jzoj 2295)
  4. cvtcolor python opencv_13行代码实现:Python实时视频采集(附源码)
  5. iOS Core Animation学习总结(2)--实现自定义图层
  6. [转载] 【学习Python】Python查看帮助---help函数
  7. Facebook 游戏开发更新文档 API 参考文档 v5.0
  8. 2020程序设计竞赛-现场赛题解
  9. libcef.dll丢失怎么办
  10. MATLAB清除内存中变量
  11. 中国石油大学(华东)计算机/软件考研经验分享
  12. python findwindow函数_PYTHON:Win32函数大全
  13. 数据集voc,coco注释格式,详情大全
  14. 字节跳动李航入选ACL Fellow,他曾这样看待机器学习
  15. 【elementui】走马灯自适应图片高度宽度 走马灯图片显示不全
  16. 我们经常遇到网络不通的故障,列举出常见的故障原因,检查方法以及解决方案
  17. 公司只发你工资不发你工资条可以吗?
  18. Qz学算法-数据结构篇(链表、栈)
  19. 基于android的串口开发板,210开发板Android系统串口程序
  20. 使用Amara将字幕添加到您的网络视频中

热门文章

  1. 在ASP.NET中跟踪和恢复大文件下载
  2. ulimit -SHn 65535 含义
  3. Redis以及Redis的php扩展安装无错版
  4. C# 里怎样得到当前执行的函数名,当前代码行,源代码文件名。
  5. C# checked、unchecked操作符
  6. 关于 ulimit -SHn 65535
  7. 以金山界面库(openkui)为例思考和分析界面库的设计和实现——资源读取模块分析
  8. FFmpeg通过摄像头实现对视频流进行解码并显示测试代码(旧接口)
  9. C++11中enum class的使用
  10. 【C++】google glog详解