基于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. 一对多(多对一)关系中的inverse和cascade属性

    转载请标明出处 http://www.cnblogs.com/haozhengfei/p/6049276.html 首先说一下inverse: "inverse" 直译过来就是&q ...

  2. hbase完全分布式安装

    hbase完全分布式安装 http://hbase.apache.org/book.html#standalone_dist                         master       ...

  3. include指令与include动作的区别(面试要考)

    include指令: 语法格式:<%@ include file=" " ...%> 发生作用的时间:页面转换期间 包含的内容:页面的实际内容 转换成的servlet: ...

  4. 宝塔服务器管理助手Linux面版-使用教程

    在顺利安装宝塔服务器linux面板之后,我们打开这个面板,UI界面设计的很简介,所有命令一看就知道是干什么用的,和我们以前用过的虚拟主机管理后台是很像的. 方法/步骤 1 使用方法如下: 面板地址:h ...

  5. ProtoBuf 与 gRPC

    用 Protobuf 很久了,但是一直觉得很简单,所以就没有做一个总结,今天想尝试一下 gRPC,顺带就一起总结一下.ProtoBuf 是个老同志了,应该是 2010 的时候发布的,然后被广泛使用,目 ...

  6. jquery自定义进度条与h5原生进度条

      介绍一款自定义的进度条 <div class="box-nine"> <div class="progress"> <!--一 ...

  7. Java XML 序列化和反序列化

    Utils 类: import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileWr ...

  8. 引用类型之数组array最全的详解

    Array类型 今天总结一下array类型. js中的数组是有着非常强大的功能.具有很大的灵活性,有两个方面的特点 1.数组的每一项可以保存任何的数据类型:2.数组大小可以动态的调整:看下面的例子: ...

  9. python-networkx学习(1)

    介绍: networkx是python的一个库,它为图的数据结构提供算法.生成器以及画图工具.近日在使用ryu进行最短路径获取,可以通过该库来简化工作量.该库采用函数方式进行调用相应的api,其参数类 ...

  10. 【转】EI收录的中国期刊

    ISSN     期刊名  0567-7718 Acta Mechanica Sinica  1006-7191 Acta Metallurgica Sinica (English Letters)  ...