基于ScrollView的图片播放

  • ScrollView的方法
  • NSTime的循环
  • UIPageControl的运用
  • 委托方法

基于iphone5 未做屏幕的适配

import "ViewController.h"

@interface ViewController ()<UIScrollViewDelegate>
@property(nonatomic,strong) UIScrollView *scrollView; //声明一个UIScrollView
@property(nonatomic, strong)UIPageControl *pageControl; //声明一个UIPageControl
@property (nonatomic, strong) NSTimer *timer;
@end @implementation ViewController
//设置ScrollView
-(UIScrollView*)scrollView{
if(_scrollView==nil){
//初始化位置
_scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 20, 320, 530)];
self.scrollView.contentSize=CGSizeMake(4*_scrollView.bounds.size.width, 0);
self.scrollView.pagingEnabled=YES;
self.scrollView.bounces=NO;
self.scrollView.showsHorizontalScrollIndicator=NO;
self.scrollView.showsVerticalScrollIndicator=NO;
//委托
self.scrollView.delegate = self;
[self.view addSubview:_scrollView];
}
return _scrollView;
} //分页设置
-(UIPageControl*)pageControl{
if(_pageControl==nil){
_pageControl=[[UIPageControl alloc]init];
_pageControl.numberOfPages=4;
_pageControl.bounds=CGRectMake(0, 0, 150, 20);
//设置中心
_pageControl.center=CGPointMake(self.view.center.x, self.scrollView.frame.size.height+30);
_pageControl.pageIndicatorTintColor=[UIColor redColor];
_pageControl.currentPageIndicatorTintColor=[UIColor blackColor];
[self.view addSubview:_pageControl];
//页数改变
[_pageControl addTarget:self action:@selector(pageChange:) forControlEvents:UIControlEventValueChanged];
}
return _pageControl;
} //页数改变事件
-(void)pageChange:(UIPageControl*)pageCtrl{
//页数改变同时变更scrollView
[self.scrollView setContentOffset:CGPointMake(pageCtrl.currentPage*self.scrollView.bounds.size.width, 0) animated:YES];
} //scrollView的contentOffset 改变
-(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)viewDidLoad {
[super viewDidLoad];
for (int i=0; i<4; i++) {
NSString *imageName= [NSString stringWithFormat:@"%02d",i+1] ;
UIImage *image=[UIImage imageNamed:imageName];
UIImageView *imageView =[[UIImageView alloc]initWithFrame:self.scrollView.bounds];
imageView.image=image;
[self.scrollView addSubview:imageView ];
}
//循环
[self.scrollView.subviews enumerateObjectsUsingBlock:^(UIImageView *imageView, NSUInteger idx, BOOL *stop) {
CGRect frame = imageView.frame;
//索引变化的时候改变坐标位置
frame.origin.x=frame.size.width*idx;
imageView.frame=frame; }];
//默认从第一个
self.pageControl.currentPage=0;
[self startTimer];
} //绑定上timer
- (void)startTimer
{
self.timer = [NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
} //更新timer
- (void)updateTimer
{
int page = (self.pageControl.currentPage + 1) % 4;
self.pageControl.currentPage = page;
[self pageChange:self.pageControl];
} @end

iOS图片轮播的更多相关文章

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

    iOS 图片轮播图(自动滚动) #import "DDViewController.h" #define DDImageCount 5 @interface DDViewContr ...

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

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

  3. ios图片轮播效果

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

  4. iOS开发UI篇—UIScrollView控件实现图片轮播

    iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播            二.实现代码 storyboard中布局 代码: #import "YYV ...

  5. IOS第六天(3:scrollView 图片轮播器)

    IOS第六天(3:scrollView 图片轮播器) #import "HMViewController.h" #define kImageCount 5 @interface H ...

  6. 【转】 iOS开发UI篇—UIScrollView控件实现图片轮播

    原文:http://www.cnblogs.com/wendingding/p/3763527.html iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播 ...

  7. iOS开发项目实战——Swift实现图片轮播与浏览

    近期開始开发一个新的iOS应用,自己决定使用Swift.进行了几天之后,发现了一个非常严峻的问题.那就是无论是书籍,还是网络资源,关于Swift的实在是太少了,随便一搜全都是OC实现某某某功能.就算是 ...

  8. ios之无限 自动 图片轮播器的实现

    比较之前发布的手动无限图片轮播器进行了改进.实现了自动无限轮播的功能.比较适合团购标题分类下面的轮播器功能. 实现思路: * 开启一个定时器,把操作放入消息循环池.每隔一定时间,操作执行一次. * 注 ...

  9. ios 学习 广告图片轮播器

    // // ViewController.m // 图片轮播器 // // Created by zjj on 15/5/23. // Copyright (c) 2015年 zjj. All rig ...

随机推荐

  1. VN问题:error:请求的名称有效,但是找不到请求的类型的

    把url中的jmsjms-pc换成IP地址试试看 IP地址你用的是外网地址,应该用局域网内网地址,改成内网地址再试试看 还有练习架设SVN服务器初期尽量用http协议,不要上来就用https协议,ht ...

  2. Python3 的序列

    序列 1.根据列表.元组.字符串的共同点把它们统称为序列(他们都是兄弟呀) 1)都可以通过索引来的到每一个元素 2)默认索引值都是从零开始(Python也支持负数索引) 3)都可以通过分片(切片)的方 ...

  3. iOS 极光推送 如何点击推送消息跳转页面

    假如你已经集成完了极光,恰好有这个问题不知如何解决,可以看看这篇文章,这篇是针对远程通知的,本地通知大同小异吧. 根据我项目的要求,极光推送跳转指定页面分为两种情况:app在后台情况和app在杀死的情 ...

  4. xtrabackup全量备份和增(差)量备份

    xtrabackup全量备份和增(差)量备份 1.xtrabackup全量备份和恢复 1)备份: innobackupex --default-file=/PATH/TO/DEFAULT --host ...

  5. mybatis_SQL映射(2)

    文章摘录自:http://blog.csdn.net/y172158950/article/details/17258377 1. sql的重用:定义一个sql片段,可在任何SQL语句中重用该片段. ...

  6. 微信小程序+和风天气完成天气预报

    <冷暖自知>天气小程序 学无止境,以玩儿玩儿的心态去学习! 花半天时间完成简单的小程序应用.适合小程序初学者. 申请小程序帐号: https://mp.weixin.qq.com/wxop ...

  7. redux学习日志:关于react-redux

    首先先强调一句:一定要多读官方文档,而且要精读,否则你会忽略掉很多东西! 一,Provider 刚开始看的时候,大致浏览了一下,知道了这个组件是能够接收store作为它的属性,然后它里面的子组件就可以 ...

  8. 配置python+mod_wsgi+apache 时 在浏览器中访问服务器时报错:Invalid HTTP_HOST header: 'XXXXX'. You may need to add u'XXXXX' to ALLOWED_HOSTS,在setting.py中添加‘*”无效的原因

    配置python+mod_wsgi+apache 时 在浏览器中访问服务器时报错:Invalid HTTP_HOST header: 'XXXXX'. You may need to add u'XX ...

  9. java面向对象——类

    一.类 类(class)是构造对象的模板或蓝图.由类构造(construct)对象的过程称为创建类的实例(instance). 用 java 编写的所有代码都位于某个类的内部.标准的Java 库提供了 ...

  10. python_为被装饰的函数保留元数据

    案例: 在函数对象中保存着一些函数的元数据,如: f.__name__           函数名 f.__doc__              函数文档 f.__moudle__       函数所 ...