1. - (void) createAdScrollView
  2. {
  3. _view = [[UIView alloc] initWithFrame:CGRectMake(, , WIDTH, )];
  4. [self.view addSubview:_view];
  5. _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(, , WIDTH, )];
  6. _scrollView.delegate = self;
  7. // 设置scrollView的contentSize
  8. _scrollView.contentSize = CGSizeMake(WIDTH*(self.scrollViewDataArray.count+), );
  9. _scrollView.pagingEnabled = YES;
  10. _scrollView.delegate = self;
  11.  
  12. // 注意这里不需要add,因为在headerView时直接return _scrollView;
  13. [_view addSubview:_scrollView];
  14.  
  15. for (int i=; i<self.scrollViewDataArray.count+; i++) {
  16. int y = i;
  17. if (y == self.scrollViewDataArray.count) {
  18. y = ;
  19. }
  20. UIButton *button = [ZCControl createButtonWithFrame:CGRectMake(WIDTH*i, , WIDTH, ) title:nil imageName:nil bgImageName:nil target:self method:@selector(buttonClick:)];
  21. // [button sd_setBackgroundImageWithURL:[NSURL URLWithString:self.scrollViewDataArray[y][@"image_path"]] forState:UIControlStateNormal]; placeholderImage:[UIImage imageNamed:@"recommend_Face"];
  22. button.tag = +i;
  23. [_scrollView addSubview:button];
  24. }
  25. // 添加定时器
  26. [NSTimer scheduledTimerWithTimeInterval: target:self selector:@selector(timerClick) userInfo:nil repeats:YES];
  27.  
  28. // 添加小白点
  29. pageController = [[UIPageControl alloc]initWithFrame:CGRectMake(, , , )];
  30. pageController.numberOfPages = self.scrollViewDataArray.count;
  31.  
  32. // 白色看不清设置成其他颜色
  33. pageController.pageIndicatorTintColor = [UIColor grayColor];
  34.  
  35. // pageController虽然是和scrollView并用的,但是并不加载在sc
  36. [_view addSubview:pageController];
  37.  
  38. // kvo观察者模式,负责观察某一个对象其中某一个值的变化,如果有新值变化就通知你。需要注意的是,观察者模式需要手动销毁,当前界面销毁并不代表观察者模式也销毁了
  39. // sc观察的对象,self为响应的对象,path为观察sc其中的一个属性,使用字符串来表示这个属性,要求与属性名保持一致。options为观察值变化为有新的变化的时候,通知我。context上下文
  40.  
  41. [_scrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil];
  42. }
  43. - (void)timerClick{
  44. // 首先判断_scrollView当前的偏移
  45. CGPoint point = _scrollView.contentOffset;
  46. point.x = point.x+WIDTH;
  47.  
  48. [UIView animateWithDuration: animations:^{
  49. _scrollView.contentOffset = point;
  50. }completion:^(BOOL finished) {
  51. CGPoint point1 = _scrollView.contentOffset;
  52. if (_scrollView.contentOffset.x/WIDTH == self.scrollViewDataArray.count) {
  53. _scrollView.contentOffset = CGPointZero;
  54. }
  55. }];
  56. }
  57. - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
  58. {
  59. // keyPath为观察的那个key也就是属性,object为观察的的那个对象,change为变化的值
  60. int x = _scrollView.contentOffset.x/;
  61. pageController.currentPage = x;
  62. }

UIScorlView 循环滚动的更多相关文章

  1. IOS实现自动循环滚动广告--ScrollView的优化和封装

    一.问题分析 在许多App中,我们都会见到循环滚动的视图,比如广告,其实想实现这个功能并不难,用ScrollView就可以轻松完成,但是在制作的过程中还存在几个小问题,如果能够正确的处理好这些小问题, ...

  2. Jquery制作--循环滚动列表

    自己模仿JQ插件的写法写了一个循环滚动列表插件,支持自定义上.下.左.右四个方向,支持平滑滚动或者间断滚动两种方式,都是通过参数设置.JQ里面有些重复的地方,暂时没想到更好的方法去精简.不过效果还是可 ...

  3. marquee 实现首尾相连循环滚动效果

    <marquee></marquee>可以实现多种滚动效果,无需js控制.使用marquee标签不仅可以滚动文字,也可以滚动图片,表格等  marquee标签不是HTML3.2 ...

  4. Expression Blend4经验分享:文字公告无缝循环滚动效果

    这次分享一个类似新闻公告板的无缝循环滚动效果,相信很多项目都会应用到这个效果.之前我也百度了一下,网上的一些Silverlight的文字或图片滚动效果,都是一次性滚动的,如果要做到无缝循环滚动,多数要 ...

  5. ul 仿 table 循环滚动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. html+css+javascript实现列表循环滚动示例代码

    使用html+css+javascript实现列表循环滚动,设置时间定时,在规定的时间内替换前一个节点的内容,具体示例如下,感兴趣的朋友可以参考下 说明:设置时间定时,在规定的时间内替换前一个节点的内 ...

  7. UIScrollView循环滚动1

    现在基本每一个商业APP都会有循环滚动视图,放一些轮播广告之类的,都是放在UIScrollView之上.假如我要实现N张图片的轮播,我借鉴了几个博文,得到两种方法实现: [第一种]:如下图(图片来源于 ...

  8. ios UIPickerView 技巧集锦(包括循环滚动)

    摘自: http://blog.csdn.net/ipromiseu/article/details/7436521 http://www.cnblogs.com/dabaopku/archive/2 ...

  9. UIPickerView 循环滚动(一种假象)

    因为网上没有查到相关方法,故而采用一种假象的方法来实现,选项循环滚动 - (void)viewDidLoad { [super viewDidLoad]; /** UIPickerView 选择器 * ...

随机推荐

  1. uitextfield输入字符限制

    -(UITextField*)createField:(NSString*)placeholder andTag:(int)tag andFont:(double)font{ UITextField ...

  2. TP中不区分大小写__APP__和__URL__的注意事项

    控制器命名为 : AuthGroupAction.class.php 问题 : 在控制器跳转中.如果模板跳转时地址的大小写错了..就会报无法加载模块 报错 : 无法加载模块:Authgroup 解决办 ...

  3. php 去除html标记--strip_tags与htmlspecialchars的区别详解

    php 去除html标记--strip_tags与htmlspecialchars的区别详解 作者: 字体:[增加 减小] 类型:转载 时间:2013-06-26   本篇文章是对php中去除html ...

  4. Smarty 配置文件的读取

    http://www.cnblogs.com/gbyukg/archive/2012/06/12/2539067.html

  5. Super不要在Super构造器中调用覆盖方法

    import java.util.Date; public class Super{ public Super(){ System."); overrideMe(); System.&quo ...

  6. js 和 jquery 获取页面和滚动条的高度 视口高度文档高度

    js 和 jquery 获取页面和滚动条的高度 //页面位置及窗口大小 function GetPageSize() { var scrW, scrH; if(window.innerHeight & ...

  7. ubuntu下opencv在Qt中的使用

    1. 编译安装OpenCV2.4.9  本博已有文章描述 2. 安装Qt和QtCreator 从qt-project.org 下载Qt安装文件 qt-opensource-linux-x64-5.4. ...

  8. UI auto test

    java.home/lib/security/java.policy (Solaris/Linux) http://www.cnblogs.com/richaaaard/p/5091059.html ...

  9. 6 个JavaScript日期处理库

    1. Later.js Later.js, a stadalone JavaScript library, offers an advanced usage for triggering recurr ...

  10. 关于YARN的HA

    一:准备 1.规划 namenode               namenode ZKFC ZKFC journalnode        journalnode               jou ...