一般是利用UIScrollView承载播放的图片,通过NSTimer方法和UIPageControl的currentPage数值改变达到播放效果。
- 在你的.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);
}