• UIScrollView 、 UIPageControll 和 定时器的 结合


     

     

     

    - (void)viewDidLoad {

        //创建一个scrollview

        self.scrollView = [[UIScrollView alloc ] initWithFrame:[UIScreen mainScreen].bounds];

        //设置偏移量

        self.scrollView.contentOffset = CGPointMake(0, 0);

        self.scrollView.contentSize = CGSizeMake(5 * kWidth, 0);

        //设置代理

        self.scrollView.delegate = self;

        self.scrollView.showsHorizontalScrollIndicator = NO;

        [self.view addSubview:_scrollView];

        

        //创建5label

        for (int i = 0; i < 5; i ++) {

            self.label = [[UILabel alloc] initWithFrame:CGRectMake(kWidth *  i, 0, kWidth, 667)];

            self.label.text = [NSString stringWithFormat:@"%d", i];

            self.label.backgroundColor = [UIColor colorWithRed:arc4random() % 256 / 255.0 green:arc4random() % 256 / 255.0 blue:arc4random() % 256 / 255.0 alpha:1.0];

            self.label.font = [UIFont boldSystemFontOfSize:30];

            self.label.textAlignment = NSTextAlignmentCenter;

            

            [self.scrollView addSubview:self.label];

            }

        // 创建一个UIPageControl

        self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(30, self.scrollView.frame.size.height - 40, 100, 20)];

        self.pageControl.pageIndicatorTintColor = [UIColor redColor];

        self.pageControl.currentPageIndicatorTintColor = [UIColor grayColor];

        self.pageControl.currentPage = 0;

        // 设置一共页数

        self.pageControl.numberOfPages = 5;

        

        [self.view addSubview:self.pageControl];

        self.scrollView.pagingEnabled = YES;

        

        [self addTimer];

        [super viewDidLoad];

        // Do any additional setup after loading the view, typically from a nib.

    }

    //实现定时器的方法

    - (void)nextLabel{

        

        //增加pageControl的页码

        NSInteger page = 0;

        if (self.pageControl.currentPage == 4) {

            page = 0;

        }else{

           page = self.pageControl.currentPage + 1;

        }

        //计算scrollview滚动的位置

        CGFloat offsetX = page * self.scrollView.frame.size.width;

        CGPoint offset = CGPointMake(offsetX, 0);

        [self.scrollView setContentOffset:offset animated:YES];

    }

     //封装一个添加定时器的方法

    - (void)addTimer{

        self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextLabel) userInfo:nil repeats:YES];

        //多线程的优先级

        [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];

    }

     

    //正在滚动的时候

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView{

        //根据scrollview的滚动位置决定pagecontrol显示第几页

        NSInteger page = self.scrollView.contentOffset.x / self.scrollView.frame.size.width;

        self.pageControl.currentPage = page;

     }

     

    //开始拖拽的时候调用

    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{

        //停止定时器

        [self.timer invalidate];

        //定时器只能只用一次,一旦停止了 只能清空

        self.timer = nil;

    }

     

    //停止拖拽

    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

        [self addTimer];

    }

  • 相关阅读:
    ###JS获取URL参数的函数###
    Ant通配符
    java.lang.OutOfMemoryError处理错误
    超越最常用的快捷键
    一个完整的工作流管理系统成部分
    Caused by: org.hibernate.hql.ast.QuerySyntaxException: TkltEmpQuitProcess is not mapped. (SSH项目中出现的映射问题)
    小的心得
    diary record 20120423
    小的思想
    用3种方法检测远程URL是否存在。
  • 原文地址:https://www.cnblogs.com/hjplcl/p/5184480.html
Copyright © 2020-2023  润新知