UI 06 ScrollView 的手动循环播放 与 自己主动循环播放
假设想要循环播放的话, scrollView的照片前要加上最后一张图片, 最后要加上第一张图片.
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//继承于UIView,能够通过创建view的四步对ScrollView进行创建.
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
scrollView.backgroundColor = [UIColor orangeColor];
[self.view addSubview:scrollView];
[scrollView release];
//重要的属性,这个属性能够让scrollView滚动起来
//contentSize 设置scrolloView的滚动范围:
scrollView.contentSize = CGSizeMake(WIDTH* 12, HEIGHT );
//按页来进行滚动
scrollView.pagingEnabled = YES;
// 显示图片
UIImageView *imageview1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"10.jpg"]];
imageview1.frame = CGRectMake(0, 0, WIDTH, HEIGHT);
[scrollView addSubview:imageview1];
[imageview1 release];
for (NSInteger i = 1 ; i < 11; i++) {
NSString *picName = [NSString stringWithFormat:@"%ld.jpg",i];
// 通过图片名创建UIImage
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:picName]];
imageView.frame = CGRectMake(WIDTH * i, 0, WIDTH, HEIGHT);
// 把ImageView放到相应的scrollView上
[scrollView addSubview:imageView];
[imageView release];
}
UIImageView *imageViewLast = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.jpg"]];
[scrollView addSubview:imageViewLast];
imageViewLast.frame = CGRectMake(WIDTH * 11,0, WIDTH, HEIGHT);
[imageViewLast release];
scrollView.delegate = self;
scrollView.tag = 1000;
scrollView.bounces = NO;
scrollView.contentOffset = CGPointMake(WIDTH, 0);
[NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(change) userInfo:nil repeats:YES];
}
// 这个是与NSTimer 结合,直接自己主动循环播放.
- (void)change{
UIScrollView *scrollview = (UIScrollView *)[self.view viewWithTag:1000];
[scrollview setContentOffset:CGPointMake(scrollview.contentOffset.x + WIDTH,0) animated:YES];
if (scrollview.contentOffset.x
== WIDTH * 11) {
scrollview.contentOffset = CGPointMake(WIDTH, 0);
}
}
若是想要滑动循环播放,须要用到协议方法, 不要忘了在上面签订协议并设定代理人.
使用NSTimer 后,就不会再走协议中的方法啦.所以偏移量的设定,在NSTimer中再又一次做改动.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
// 偏移量.
if (scrollView.contentOffset.x == 0) {
scrollView.contentOffset = CGPointMake(WIDTH * 10,0);
}else if(scrollView.contentOffset.x == WIDTH * 10){
scrollView.contentOffset = CGPointMake(WIDTH, 0);
}
}
UI 06 ScrollView 的手动循环播放 与 自己主动循环播放的更多相关文章
- 最简单的视音频播放示例6:OpenGL播放YUV420P(通过Texture,使用Shader)
本文记录OpenGL播放视频的技术.上一篇文章中,介绍了一种简单的使用OpenGL显示视频的方式.但是那还不是OpenGL显示视频技术的精髓.和Direct3D一样,OpenGL更好的显示视频的方式也 ...
- 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)
前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流, ...
- AVAudioPlayer播放并实现了后台播放和远程控制
// ViewController.h #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> @class ...
- [Effective JavaScript 笔记]第49条:数组迭代要优先使用for循环而不是for...in循环
示例 下面代码中mean的输出值是多少? var scores=[98,74,85,77,93,100,89]; var total=0; for(var score in scores){ tota ...
- 最简单的视音频播放示例9:SDL2播放PCM
本文记录SDL播放音频的技术.在这里使用的版本是SDL2.实际上SDL本身并不提供视音频播放的功能,它只是封装了视音频播放的底层API.在Windows平台下,SDL封装了Direct3D这类的API ...
- 最简单的视音频播放示例8:DirectSound播放PCM
本文记录DirectSound播放音频的技术.DirectSound是Windows下最常见的音频播放技术.目前大部分的音频播放应用都是通过DirectSound来播放的.本文记录一个使用Direct ...
- 最简单的视音频播放示例7:SDL2播放RGB/YUV
本文记录SDL播放视频的技术.在这里使用的版本是SDL2.实际上SDL本身并不提供视音频播放的功能,它只是封装了视音频播放的底层API.在Windows平台下,SDL封装了Direct3D这类的API ...
- 最简单的视音频播放示例5:OpenGL播放RGB/YUV
本文记录OpenGL播放视频的技术.OpenGL是一个和Direct3D同一层面的技术.相比于Direct3D,OpenGL具有跨平台的优势.尽管在游戏领域,DirectX的影响力已渐渐超越OpenG ...
- 最简单的视音频播放示例4:Direct3D播放RGB(通过Texture)
本文接着上一篇文章继续记录Direct3D(简称D3D)播放视频的技术.上一篇文章中已经记录了使用Direct3D中的Surface渲染视频的技术.本文记录一种稍微复杂但是更加灵活的渲染视频的方式:使 ...
随机推荐
- 云服务器查看外网ip
curl ip.6655.com/ip.aspx curl whatismyip.akamai.com wget -qO - ifconfig.co curl icanhazip.com dig +s ...
- python中lambda的另类使用
带if/else: ( lambda x, y: x if x < y else y )( 1, 2 ) 科里化: ( lambda x: ( lambda y: ( lambda z: x + ...
- Onvif开发之Linux下gsoap的使用及移植
一直以来都是在CSDN上面学习别人的东西,很多次想写点什么但是又无从写起.由于公司项目需要,最近一段时间在研究onvif,在网上找了很多资料,发现资料是非常多,但是很少有比较全的资料,或者资料太多无从 ...
- Qt使用第三方库
简述 在 Qt 中经常会用到第三方库,例如:FFmpeg.OpenCV 等.第三方库的使用比较简单,只需要一些基本的配置就可以搞定,一起来看看吧! 简述 第三方库 源代码 库文件 目标目录 第三方库 ...
- 9.Maven之(九)依赖关系
转自:https://yq.aliyun.com/ziliao/312160 在maven的管理体系中,各个项目组成了一个复杂的关系网,但是每个项目都是平等的,是个没有贵贱高低,众生平等的世界,全球每 ...
- ACM 中JAVA的应用
原文地址:http://www.cppblog.com/vontroy/archive/2010/05/24/116233.html 先说一下Java对于ACM的一些优点吧: (1) 对于熟悉C/C+ ...
- python ATM机 案例代码
利用目前学的流程控制写的 ''' ATM机 需求: 1.登陆 输入账号输入密码 每日只有3次登陆密码错误的机会,超过3次禁止登陆 2.查询余额 3.存款 4.取款 5.转帐 6.退出 ''' info ...
- 【Educational Codeforces Round 35 B】Two Cakes
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 从小到大枚举x. 看看a/x+b/x是不是大于等于n 是的话. 看看是不是两种蛋糕都能凑一堆. 也即x的最大枚举量是min(a,b) ...
- 基于mybatis的BaseDao及BaseService深度结合(转)
原文地址:http://zhaoshijie.iteye.com/blog/2003209 关键字:Mybatis通用DAO设计封装(mybatis) 说明: mybatis默认分页机制为逻辑分页,所 ...
- kafka同步生产者和异步生产者深入剖析
什么是kafka同步生产者,什么是kafka异步生产者? 比如这里某个topic有3个分区. kafka同步生产者:这个生产者写一条消息的时候,它就立马发送到某个分区去. kafka异步生产者:这个 ...