iOS UIScrollView定时循环播放图片

来源:互联网 发布:js 弹出输入框 编辑:程序博客网 时间:2024/05/22 14:53

一般是利用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