一、自动轮播图的实现
之前写demo的时候都是照抄网上或者复制的,没有真正的学会,这周我花费了一段时间自己敲出来,首先是要实现无限轮播:
我的思路就是在图片的左边再加一张最后一张图片,在右边再加一张第一张图片,然后当到了最左边的时候,将UIScrollView的左边变到最后一张图片,右边同理。如下图:
我这里是一共5张图片
//W位屏宽
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (self.scrollView.contentOffset.x == W * 6) {
[self.scrollView setContentOffset:CGPointMake(W, 0) animated:NO] ;
}
if (self.scrollView.contentOffset.x == 0) {
[self.scrollView setContentOffset:CGPointMake(W * 5, 0) animated:NO] ;
}
CGFloat offSetX = self.scrollView.contentOffset.x + W * 0.5;
int page = offSetX / W;
if (page == 6) {
self.pageControl.currentPage = 0;
} else if (page == 0) {
self.pageControl.currentPage = 4;
} else {
self.pageControl.currentPage = page - 1;
}
}```
自动轮播就是设置一个计时器,在拖动滚动视图的时候将其销毁,在停止拖动时再将其启动。
创建计时器:
```objectivec
- (void) setup {
self.timer = [NSTimer timerWithTimeInterval:3 target:self selector:@selector(autoPlay) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode];
}
停止拖动时:
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
[self setup];
}
拖动时:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
if(scrollView.tag == 102) {
[self.timer invalidate];
}
}
自动播放:
- (void)autoPlay {
int page = self.scrollView.contentOffset.x / W + 1;
if (page == 6) {
self.pageControl.currentPage = 0;
self.scrollView.contentOffset = CGPointMake(W, 0);
} else {
self.pageControl.currentPage = page - 1;
[self.scrollView setContentOffset:CGPointMake(page * W, 0) animated:YES] ;
}
}
二、刷新内容
思路:在将UITableView拖动到一个坐标时,然后请求旧数据,然后刷新修改cell的格数并且添加内容。
设置一个全局变量,在每次请求后给它的值加一,然后格数增加一倍。
三、“小菊花”的添加
我将UITableView多分出来一组,这组只有一个cell,只用于存放小菊花。每当数据请求成功后就将其停止。