1,实现分页效果。
需要自定义UIScrollView,并模仿UITableView里的协议:UITableViewDataSource,UITableViewDelegate。定义两个协议MyScrollViewDelegate,MyScrollViewDataSource,即要知道一共有多少页,每一页长什么样。
再根据滚动的偏移量计算出当前页是第几页。
2,添加点击手势识别
//添加点击手势识别,否则点击图片没反应
UITapGestureRecognizer *tap = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(didTap:)];
[selfaddGestureRecognizer:tap];
3,UIScrollView的两个重要的协议
#pragma mark - UIScrollViewDelegate
//scrollView已经完成拖动手指离开,图片继续向后减速滚动,decelerate为1。该函数在这个时机调用
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if (!decelerate) {
if (_delegate && [_delegate respondsToSelector:@selector(scrollViewDidEndScroll:)]) {
[_delegate scrollViewDidEndScroll:self];
}
}
}
//scrollView已经完成减速停止时,系统自动调用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//判断_delegate所指向的对象非空,并且协议里可选的方法已经实现
if (_delegate && [_delegate respondsToSelector:@selector(scrollViewDidEndScroll:)]) {
[_delegate scrollViewDidEndScroll:self];
}
}
4,对于协议里面可选的方法在使用时要进行判断
if (_delegate && [_delegate respondsToSelector:@selector(scrollViewDidEndScroll:)])
5,
UIScrollView 里面重要的属性
@property(nonatomic)CGPoint contentOffset; // default CGPointZero
@property(nonatomic)CGSize contentSize; // default CGSizeZero 内容的大小,决定了它能否滚动
//计算当前页
- (NSInteger)currentPage
{
return_scrollView.contentOffset.x /_scrollView.frame.size.width;
}
//设置当前页:还是要将其转化为偏移量contentOffset的多少
- (void)setCurrentPage:(NSInteger)currentPage
{
_scrollView.contentOffset =CGPointMake(_scrollView.frame.size.width * currentPage,0);
_currentPage = currentPage;
}
6,UIPageControl的使用。用来指示滚动页面的当前页。有两个重要的属性numberOfPages(一共多少页)和currentPage(当前页)
pageControl = [[UIPageControlalloc]initWithFrame:CGRectMake(0, height - tipHeight - pageHeight, rect.size.width, pageHeight)];
// //只在调试模式使用,得到真实数据后注释掉
//#ifdef DEBUG
// pageControl.numberOfPages = 8;
//#endif