iOS UIScrollView定时循环播放图片

一般是利用UIScrollView承载播放的图片,通过NSTimer方法和UIPageControl的currentPage数值改变达到播放效果。

  1. 在你的.h文件中声明控件属性(记得加上 UIScrollViewDelegate 代理)
YourProject.h
{
    UIPageControl *pageControl;
    UIScrollView *scrollView;
    BOOL flag ; //用于判断图片滚动到第一张或者最后一张
    NSTimer *timer;
    NSArray *imgArray;
}

2.在你的.m文件中定义控件和布局

/**
    scrollView和pageControl定义
*/
scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(10, 10, self.view.frame.size.width - 20, 400)];
    scrollView.showsVerticalScrollIndicator = NO;
    scrollView.showsHorizontalScrollIndicator = NO;
    scrollView.pagingEnabled = YES;
    scrollView.delegate = self;
    [self.view addSubview:scrollView];


pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, ScreenWidth-20, 375, 0)];
    pageControl.currentPageIndicatorTintColor = RGB(177, 177, 177);
    pageControl.pageIndicatorTintColor = RGB(211, 211, 211);
    [self.view addSubview:pageControl];

/**
    添加图片
    假设项目中已经存在三张图片,名字分别为 pic01.png pic02.png pic03.png
*/

imgArray = [NSArray arrayWithObjects:@"pic01.png",@"pic02.png",@"pic03.png", nil];
pageControl.numberOfPages = imgArray.count;
scroll.contentSize = CGSizeMake(scrollView.frame.size.width*imgArray.count, scrollView.frame.size.height);
pageControl.currentPage = 0;


for (int i = 0;i < imgArray.count;i++) 
{
    UIImageView *image = [[UIImageView alloc] initWithFrame:CGRectMake(scrollView.frame.size.width*i, 0, scrollView.frame.size.width, scrollView.frame.size.height)];
   image.contentMode = UIViewContentModeScaleAspectFit;
   image.image = [UIImage imageNamed:imgArray[i]];
   [scroll addSubview:image];
}
if(imgArray.count > 1)//大于一张才循环
{
   timer = [NSTimer scheduledTimerWithTimeInterval:4 target:self selector:@selector(changePageWithTimeInterval) userInfo:nil repeats:YES];
}

3.实现定时滚动的方法

//定时器播放图片 
-(void)changePageWithTimeInterval
{
    if(pageControl.currentPage == 0)
    {
        flag = YES;//如果当前的pageControll页数是第一张,flag为真
    }
    if(pageControl.currentPage == self.imgArray.count - 1)
    {
        flag = NO;//如果当前的PageControl页数是最后一张,flag为假
    }
    if(flag)
    {
        //当前的pageControl页数是第一张时,向右滑动
        NSInteger witch = pageControl.currentPage+1;

        [scrollView setContentOffset:CGPointMake(witch*ScreenWidth,0) animated:YES];
        pageControl.currentPage = witch;
    }
    else
    {
        //当前的pageControll页数是最后一张时,向左滑动1-2-3-2-1
//        NSInteger witch = pageControl.currentPage-1;
//        pageControl.currentPage = witch;
        //1-2-3-1-2-3
        [scrollView setContentOffset:CGPointMake(0,0) animated:YES];
        pageControl.currentPage = 0;
    }
}

//scrollView 滑动播放图片
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    pageControl.currentPage = ceil(scrollView.contentOffset.x/scrollView.frame.size.width);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值