iOS技术点

iOS 仿微博、闲鱼、转转等APP 满足垂直滑动视图,扩展水平滑

2018-01-05  本文已影响417人  早起的小孩没饭儿吃

先放个代码链接
(微博模式):https://github.com/qussers/IZJHorizontalTableView
(闲鱼模式):https://github.com/qussers/IZJVerticalHrizontalView
这类APP普遍满足多个或全部特点:
1、存在一个头部视图,或者说垂直滑动的视图。
2、在垂直滑动的视图下方,一般还有个停驻的视图。
3、在停驻视图下方,存在水平切换的多个视图。
4、水平切换的视图中,包含垂直滑动视图。并且垂直的滑动能联动头部视图的滑动。
5、头部视图的响应链本身完整。
6、整体的垂直滑动能够丝滑,并且有弹簧效果。

微博的效果和闲鱼或者转转等二手交易平台的滑动效果不同点在于,微博的头部滑动止于停驻视图,而类似闲鱼的这种,贯穿整个视图。两种效果的实现方案各不相同,下面分开说。

第一种:继承自UITableVIew
适用情况: 垂直方向有大量视图需要加载,列表比较长,自定义性能要求高。
层级结构:
0:UITableView
1: TableVIew的Footer添加CollectionView
2: CollectionView添加横向滑动的ScrollView
要点:
通过重写

第二种:继承自UIView
适用情况:垂直headerVIew比较轻量,多类似头部视图高度较小。
层级结构:
0:UIView
1:UIView->UICollectionView
2: UICollectionView->ScrollView
3: ScrollView-> HeaderView
要点:
横向滑动时,偷梁换柱, 数据源传入ScrollView,并设置ContentInset, 将HeaderView从ScrollView上转移添加到UIView上,横向滑动结束后,再切换到ScrollView。头部视图添加一个父视图(这里我用了一个ScrollView稍稍扩大了下contentSize的宽度),接收横向滑动响应链条,从而阻断下层的横向滑动响应。

image.png

更一般的自定义效果如:


横向滑动2.gif
上一篇 下一篇

猜你喜欢

热点阅读