关于 iOS UIScrollView 嵌套的一些问题

最近看了一下有关UIScrollView嵌套的一些页面,发现了一些问题。而且各个厂商实现的方式好像还有区别,记录一下这种页面的实现过程。

嵌套scrollView在市场软件中的应用

现在一般的app都会有以下这种设计,上下滑动时有一部分视图会吸附到顶部,并且下面的视图可以左右滑动,我分别截取了bilibili个人页,抖音个人页,淘宝主页,网易云音乐歌手页,美团首页进入的外卖页作为测试

滑动前:

滑动后顶部会吸附一个视图:

下拉回来会回到滑动前的那种状态,也就是到达了指定的区域,顶部吸附的视图也就随之下来了。

最开始的思路

首先布局还是挺简单的,无非就是一个UIScrollView加一个childViewController的组合

整个页面是一个UIScrollView,这个UIScrollView上部分是我们自定义的一个视图。下部分是一个ViewPager其封装原理无非也就是一个自定义视图(顶部的吸附视图)加上一个左右滑动的UICollectionView,然后在UICollectionViewCell上放置childViewController。然后在childViewController上面添加UITableView。只不过这个viewPager的高度要比最外层的UIScrollView高出一个个红色的自定义头部那一部分的高度,用来达到最外层滚动的目的。

这样我们就有了两个滚动视图,我们可以通过代理或者block把最里面的UITableView的滚动方法- (void)scrollViewDidScroll:(UIScrollView *)scrollView获取到,然后判断是否滚动到紫色区域的头部(临界值)就可以了。

。网上已经有很多的实现方式,其核心就是嵌套UIScrollView,然后启动多重手势识别代理,根据两层UIScrollView- (void)scrollViewDidScroll:(UIScrollView *)scrollView这个代理去判断是否去滚动当前的UIScrollView即可