iOS 定时器轮播

iOS 简单的轮播

-(UIScrollView*)scrollV{

    if(!_scrollV) {

        _scrollV= [[UIScrollViewalloc]initWithFrame:self.view.frame];

        _scrollV.pagingEnabled = YES;

        _scrollV.bounces=NO;

        _scrollV.delegate=self;

        _scrollV.contentSize=CGSizeMake(WIDTH*imgArr.count,HEIGHT) ;


        for(inti =0; i

            UIImageView*imgV = [[UIImageViewalloc]initWithFrame:CGRectMake(WIDTH*i,0,WIDTH,HEIGHT)];

            imgV.image= [UIImageimageNamed:imgArr[i]];

            [_scrollVaddSubview:imgV];

            if(i ==imgArr.count-1) {

                imgV.userInteractionEnabled=YES;

                UIButton*btn = [[UIButtonalloc]initWithFrame:CGRectMake((WIDTH-100)/2,560,100,100)];

                btn.backgroundColor= [UIColorblackColor];

                btn.layer.cornerRadius=10;

                btn.clipsToBounds=YES;

                [btnsetTitle:@"立即体验"forState:UIControlStateNormal];

                [btnaddTarget:self action:@selector(Click) forControlEvents:UIControlEventTouchUpInside];

                [imgVaddSubview:btn];

            }

        }

    }


    return _scrollV;

}

-(UIPageControl *)pageC{

    if(!_pageC) {

        _pageC= [[UIPageControlalloc]initWithFrame:CGRectMake((WIDTH-100)/2,600,100,30)];

        _pageC.numberOfPages = imgArr.count;

        _pageC.pageIndicatorTintColor = [UIColor blackColor];

        _pageC.currentPageIndicatorTintColor = [UIColor redColor];

        [_pageC addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];

    }

    return _pageC;

}

-(void)Click{

    ViewController *vc = [ViewController new];

    // 有导航栏用 push

//    [self.navigationController pushViewController:vc animated:YES];

    [self presentViewController:vc animated:YES completion:^{

        nil;

    }];

}

//pageControl 点击事件,点击PageCt 改变滚动视图的偏移量

-(void)valueChanged:(UIPageControl*)pc

{

    NSIntegercurrentPage = pc.currentPage;

    //设置scrollV的偏移量

    [_scrollV setContentOffset:CGPointMake(currentPage * WIDTH,0) animated:YES];

}

//滚动视图停止滚动的时候

-(void)scrollViewDidScroll:(UIScrollView*)scrollView

{

    NSLog(@"滚动的时候会调用");

    _pageC.currentPage = scrollView.contentOffset.x/WIDTH;

}

//创建定时器

- (void)startTimer {


    _timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(ChangeImage)userInfo:nil repeats:YES];


    // 调整timer 的优先级

    NSRunLoop*mainLoop = [NSRunLoopmainRunLoop];

    [mainLoopaddTimer:_timer forMode:NSRunLoopCommonModes];

}

//定时器方法,定时滚动图片

-(void)ChangeImage{

    if (self.pageC.currentPage==imgArr.count-2) {

        [selfstopTimer];

    }

    [_scrollV setContentOffset:CGPointMake((self.pageC.currentPage+1)*WIDTH, 0) animated:YES];

}

/**

 手指开始拖动的时候, 就让计时器停止

 */

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

    [self stopTimer];

}

/**

 手指离开屏幕的时候, 就让计时器开始工作

 */

- (void)scrollViewWillEndDragging:(UIScrollView*)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inoutCGPoint*)targetContentOffset {

    [self startTimer];

}

//停止定时器

- (void)stopTimer

{

    [self.timer invalidate];

    self.timer=nil;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,303评论 3 119
  • http://js.jirengu.com/qegovoxize/1/edit?html,css,output这个...
    好怪的怪兽阅读 2,037评论 3 2
  • 一瓶老干妈 收服了多少人的心和胃~ 就连在“水深火热”的美帝人民心中也一样 在亚马逊上是好评如潮 而且售价居然高达...
    雪糕姐阅读 634评论 1 1
  • 在网络上看视频不但画质精细,而且加载速度很快,还能够跟网友互动,有越来越多的用户都喜欢在网页中直接看视频,不过最近...
    xinqudao阅读 419评论 0 0

友情链接更多精彩内容