前面两篇文章聊的UITableView和UICollectionView都是继承自UIScrollView,本篇文章就来简单聊聊UIScrollView。
frame是视图在屏幕中展示的位置和大小,也就是可视区域的位置和大小。
contentSize是scrollView视图的内部内容可以滚动的区域大小,也就是scrollView视图内容的实际大小。
contentOffset是scrollView实际滚动区域的左上角与视图可视区域左上角的距离。
pagingEnabled是是否以一页的大小整体进行滚动,也就是用来实现翻页的效果。
UIScrollView的一些常用的代理方法如下:
#pragma mark - UIScrollViewDelegate
//监听页面滚动,根据scrollView.contentOffset来做业务逻辑
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
// NSLog(@"%f, %f", scrollView.contentOffset.x, scrollView.contentOffset.y);
}
//开始拖拽。中断一些业务逻辑,比如视频、gif的播放(在列表拖动的时候停止播放gif和视频)
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
NSLog(@"scrollViewWillBeginDragging");
}
//结束拖拽
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
NSLog(@"scrollViewDidEndDragging");
}
//开始减速
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
}
//减速结束。用于页面滚动停止的时候开启一个逻辑,比如视频自动播放(页面停止滚动后,开启视图滚动前暂停的gif或者视图的播放)
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
}
实例介绍
上图是我在知乎首页的一个截图。
首先,整个从上而下它是一个tableView+collectionView。(内容列表是tableView,“关注、推荐、热榜”标题栏是一个collectionView)
然后,“关注、推荐、热榜”每一个标题栏都对应一个tableView,一共有3个tableView,这三个tableView都添加到一个共同的scrollView上,然后这个scrollView的pagingEnabled要设置成YES,这样才能实现翻页的效果。
以上。