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

先放个代码链接
(微博模式):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
要点:
通过重写

  • (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer ;
    达到底层TableView能够相应上层滑动的效果。
    为了优化体验,对水平和垂直加速度进行判断,规避双方向滑动。
    通过监听各自ContentOffset从而控制各层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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,316评论 4 61
  • ——纪念结婚一周年 不记得写过所谓情书,即使也曾产生懵懂的感情。也不记得说过的所谓情话,即使也曾有过心动的感觉...
    北极泪阅读 1,852评论 0 0
  • 不知何时开始, 我们不如从前那般美好, 你我眼中的对方, 不再完美无瑕。 你还是那个你, 我也是原来的我, 只不过...
    溪呢喃阅读 1,436评论 0 0
  • 心理学家认为,人的意识分为意识和潜意识,我们自己能体会到的、感受到的,就是意识。 比如咱们经常说的“我意识到了问题...
    室内空气污染检测治理阅读 1,378评论 0 0
  • 5月8号 我的朋友汤小姐结婚了! 我参加了她的婚礼。 多少次, 我都在想汤小姐 会嫁给一个什么样的人, 她会有怎样...
    莫玄斐隐阅读 3,352评论 0 1