圖片輪播
圖片輪播在APP中的使用常見度就不用多說性昭。此demon主要使用到UIScrollView豪硅,NSTimer硕勿。當開始拖動UIScrollView時替梨,NSTimer暫停使用撬腾;當UIScrollView結(jié)束拖動螟蝙,NSTimer開始啟動。
1初始化輪播圖片
設(shè)置圖片輪播
CGFloat imageW = self.imageScrollView.frame.size.width;
CGFloat imageH = self.imageScrollView.frame.size.height;
CGFloat imageY = 0;
//設(shè)置圖片
for(int i = 0;i<5;i++)
{
UIImageView *imageView = [[UIImageView alloc]init];
CGFloat imageX = imageW * i;
imageView.frame = CGRectMake(imageX, imageY, imageW, imageH);
NSString *name = [NSString stringWithFormat:@"img_0%d", i + 1];
imageView.image = [UIImage imageNamed:name];
[self.imageScrollView addSubview:imageView];
2設(shè)置UIScrollView滑動范圍(不可缺少民傻,否則不可以拖動)及一些屬性
設(shè)置內(nèi)容尺寸
CGFloat contentW = 5 * imageW;
self.imageScrollView.contentSize = CGSizeMake(contentW, 0);
//分頁
self.imageScrollView.pagingEnabled = YES;
//去掉橡皮條
self.imageScrollView.showsHorizontalScrollIndicator = NO;
值得注意的時胰默,如果設(shè)置了拖動范圍后依然不可以多動,那就是Atuo Layout搞得鬼漓踢,這時候應該取消使用牵署。
QQ20160404-0.png
3.由于UIScrollView設(shè)置為分頁顯示,所以使用UIPageControl來控制顯示
設(shè)置圓點個數(shù)
self.pageConctrol.numberOfPages = 5;
4.APP啟動完成喧半,開啟定時器
[self addTimer];
/*
* 添加定時器
*/
- (void)addTimer
{
self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
}
- (void)nextImage
{
// 1.增加pageControl的頁碼
int page = 0;
if (self.pageConctrol.currentPage == 5 - 1) {
page = 0;
} else {
page = self.pageConctrol.currentPage + 1;
}
// 2.計算scrollView滾動的位置
CGFloat offsetX = page * self.imageScrollView.frame.size.width;
CGPoint offset = CGPointMake(offsetX, 0);
[self.imageScrollView setContentOffset:offset animated:YES];
}
5.UIScrollView代理辦法
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
NSLog(@"====");
// 停止定時器(一旦定時器停止了,就不能再使用)
[self removeTimer];
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
// 根據(jù)scrollView的滾動位置決定pageControl顯示第幾頁
CGFloat scrollW = scrollView.frame.size.width;
int page = (scrollView.contentOffset.x + scrollW * 0.5) / scrollW;
self.pageConctrol.currentPage = page;
}
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
// 開啟定時器
[self addTimer];
}
-(void)removeTimer
{
[self.timer invalidate];
self.timer = nil;
}
效果
QQ20160404-1.png