假设想要循环播放的话, 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 的手动循环播放 与 自己主动循环播放的更多相关文章

  1. 最简单的视音频播放示例6:OpenGL播放YUV420P(通过Texture,使用Shader)

    本文记录OpenGL播放视频的技术.上一篇文章中,介绍了一种简单的使用OpenGL显示视频的方式.但是那还不是OpenGL显示视频技术的精髓.和Direct3D一样,OpenGL更好的显示视频的方式也 ...

  2. 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)

    前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流, ...

  3. AVAudioPlayer播放并实现了后台播放和远程控制

    // ViewController.h #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> @class ...

  4. [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 ...

  5. 最简单的视音频播放示例9:SDL2播放PCM

    本文记录SDL播放音频的技术.在这里使用的版本是SDL2.实际上SDL本身并不提供视音频播放的功能,它只是封装了视音频播放的底层API.在Windows平台下,SDL封装了Direct3D这类的API ...

  6. 最简单的视音频播放示例8:DirectSound播放PCM

    本文记录DirectSound播放音频的技术.DirectSound是Windows下最常见的音频播放技术.目前大部分的音频播放应用都是通过DirectSound来播放的.本文记录一个使用Direct ...

  7. 最简单的视音频播放示例7:SDL2播放RGB/YUV

    本文记录SDL播放视频的技术.在这里使用的版本是SDL2.实际上SDL本身并不提供视音频播放的功能,它只是封装了视音频播放的底层API.在Windows平台下,SDL封装了Direct3D这类的API ...

  8. 最简单的视音频播放示例5:OpenGL播放RGB/YUV

    本文记录OpenGL播放视频的技术.OpenGL是一个和Direct3D同一层面的技术.相比于Direct3D,OpenGL具有跨平台的优势.尽管在游戏领域,DirectX的影响力已渐渐超越OpenG ...

  9. 最简单的视音频播放示例4:Direct3D播放RGB(通过Texture)

    本文接着上一篇文章继续记录Direct3D(简称D3D)播放视频的技术.上一篇文章中已经记录了使用Direct3D中的Surface渲染视频的技术.本文记录一种稍微复杂但是更加灵活的渲染视频的方式:使 ...

随机推荐

  1. vue+mui+html5+ plus开发的混合应用底部导航的显示与隐藏

    1. 模板相关内容(template) <template> <div> <transition :name="transitionName"> ...

  2. dp水题

    hdu 2084: #include <stdio.h> #include <iostream> #include <string.h> using namespa ...

  3. Java生产者与消费者(上)

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 生产与消费者模式,是编程中最常用的模式之一,在多线程中应用比较明显.个人理解:在自助餐厅,厨师在不断 ...

  4. [Angular] Make a chatbot with DialogFlow

    Register a account on https://console.dialogflow.com/api-client/ "Creat a intent" -- you c ...

  5. [Redux-Observable && Unit Testing] Mocking an ajax request when testing epics

    Often in unit tests we are focussing on the logic involved in crafting a network request, & how ...

  6. dlopen 方式调用 Linux 的动态链接库

    在dlopen()函数以指定模式打开指定的动态链接库文件.并返回一个句柄给 dlsym()的调用进程. 使用 dlclose()来卸载打开的库. 功能:打开一个动态链接库,并返回动态链接库的句柄 包括 ...

  7. CCNP路由实验之十五 NAT(网络地址转换)

     CCNP路由实验之十五 NAT(网络地址转换) 众所周知,要让自己的电脑连上Internet,必须要到运营商(ISP)申请一个上网账号,依据此账号申请自己的宽频业务(拨号上网.商业固定IP等等) ...

  8. 【基础练习】【线性DP】codevs2622 数字序列(最大连续子序列和)题解

    版权信息 转载请注明出处 [ametake版权全部]http://blog.csdn.net/ametake欢迎来看 这道题目本质就是朴素的最大连续子序列和 直接上题目和代码 题目描写叙述 Descr ...

  9. js---25桥模式

    桥接模式是一种既能把两个对象连接在一起,又能避免二者间的强耦合的方法.通过“桥”把彼此联系起来,同时又允许他们各自独立变化. 主要作用表现为将抽象与其实现隔离开来,以便二者独立化. <!DOCT ...

  10. 【Codeforces Round #428 (Div. 2) C】Journey

    [Link]:http://codeforces.com/contest/839/problem/C [Description] 给一棵树,每当你到一个点x的时候,你进入x的另外一每一个出度的概率都是 ...