iOS ScrollView嵌套tableView联动滚动的思路分析

技术iOS ScrollView嵌套tableView联动滚动的思路分析这篇文章主要讲解了“iOS ScrollView嵌套tableView联动滚动的思路分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小

本文主要讲解“iOS ScrollView嵌套tableView交互滚动的思维分析”,简单明了,易学易懂。让我们一起学习边肖的“iOS ScrollView嵌套tableView交互滚动的思维分析”。

前言

随着业务的发展,页面的复杂度越来越高,嵌套滚动查看的方式越来越受到设计师的青睐,这在各大电商应用中非常常见。以下演示图:

但是这种互动不是官方推荐的,对发展也不是那么友好。需要处理滚动手势的冲突,页面的多级嵌套给开发带来了一定的麻烦。接下来,我将谈谈我们的实现思路。

思路和过程

与这个页面结构相对应的,毫无疑问底层是一个垂直的scrollView,页面顶部放置一个固定高度的页眉,后面是一个支持水平滚动切换的容器scrollView,容器上方是每个页面的具体tableView,如下图所示:

思路一

首先想到的是,既然是滚动视图,我们可以通过滚动视图的可滚动属性来实现吗?最开始,顶层具体业务的tableView禁止滚动。然后,根据事件响应链,滚动事件将由底层ScrollView接收和处理。达到最大偏移量后,底层ScrollView禁止滚动,顶层tableView同时打开,顶层可以滑动。不幸的是,现实是残酷的。

因此,当偏移量达到临界值时,由于可滚动属性和最大偏移量的设置,滚动手势将被截断,需要再次拖动才能继续滚动。显然,这种效果是不可接受的。

思路二

这是同事提供的思路。做这个的时候和同事讨论过。他们以前有这样的互动页面,并使用定制手势。但是由于UIScrollView具有弹性效果,普通的滑动手势无法做到这一点,因此有必要引入UIDynamic仿真力场来实现阻尼效果。想了想,虽然在某种程度上是可行的,但是对于一个联动滑动来说,做这么多事情还是比较繁琐的,自定义手势的模拟弹性效果和原生ScrollView的效果可能还是有一定差距的,所以我选择放弃。

思路三

回到第一个想法,除了边界位置会阻挡联动滚动,其他效果还是有可能的,那么能否通过手段解决这个问题呢?既然能写到这里,毫无疑问,绝对有可能。通过手势渗透,即滑动手势可以同时作用于底部的ScrollView和上部的business tableView,并同时控制它们的滚动。通过底层滚动视图实现手势识别协议,同时响应滚动事件:

func gestureRecognizer(_ gestureRecognizer : UIGestureRecognizer,应与其他手势识别器同时识别): UIGestureRecognizer)-Bool { return true }

根据官方文件:

询问代表是否应该允许两个手势识别器同时识别手势。

表达式的意思是问委托是否允许两个手势识别器同时识别手势,所以我们实现了这个协议,“穿透”手势,分别在底层容器和上层业务中实现滚动视图的代理方法funscrolview did scroll(_ scrolview : uiscroll view),分别控制它们的可滚动状态和偏移量,从而达到目的。部分实现如下:

基础容器滚动视图:

func scrollviewdscroll(_ scrollView: UIScrollView){ header view . ishidden=scrollview . content offset . y=maxOffset?真:假如果!superconscroll { scroll view . content offset . y=maxOffset current VC . childcan croll=true } else { if scroll view . content offset . y=maxOffset { scroll view . content offset . y=maxOffset superconscroll=false current VC . childcan croll=true } } }

上层业务表视图:

func scrollviewdscroll(_ scrollView: UIScrollView){ if!childcan croll { scroll view . content offset . y=0 } else { if scroll view . content offset . y=0 { childcan croll=false supercrollblock?(真)} } }

根据底部ScrollView是否达到最大偏移量,控制表头的显示隐藏及对应的偏移量和可滚动状态,在业务tableView中回调ScrollView的可滚动状态,实现状态同步。一般来说是清楚的,详情请见QFMultipleScrollView。

感谢您的阅读。以上就是“iOS ScrollView嵌套tableView互锁滚动的思路分析”的内容。学习完这篇文章,相信你对iOS ScrollView嵌套tableView的互锁滚动的思路分析有了更深的理解,具体用法还需要实践验证。在这里,边肖将为大家推送更多相关知识点的文章。欢迎关注!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/68670.html

(0)

相关推荐

  • 如何使用plink进行连锁不平衡分析

    技术如何使用plink进行连锁不平衡分析本篇文章为大家展示了如何使用plink进行连锁不平衡分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。plink是进行连锁不平衡分析的常用

    攻略 2021年11月10日
  • 如何理解MYSQL-GroupCommit 和 2pc提交

    技术如何理解MYSQL-GroupCommit 和 2pc提交这篇文章将为大家详细讲解有关如何理解MYSQL-GroupCommit 和 2pc提交,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后

    攻略 2021年11月16日
  • 摩天轮英语,用英文介绍新加坡摩天轮

    技术摩天轮英语,用英文介绍新加坡摩天轮A Ferris wheel,which is also known as an observation wheel or big wheel,is a nonbuilding st

    生活 2021年10月24日
  • SpringCloud分布式微服务b2b2c电子商务中docker-feign-hystrix-ribbon的示例分析

    技术SpringCloud分布式微服务b2b2c电子商务中docker-feign-hystrix-ribbon的示例分析小编给大家分享一下SpringCloud分布式微服务b2b2c电子商务中docker-feign-

    攻略 2021年11月19日
  • 鞋子磨脚怎么办,鞋子磨脚咋办,舍不得扔

    技术鞋子磨脚怎么办,鞋子磨脚咋办,舍不得扔时下,是添置新衣新鞋最好的时候,但对于很多人来说,新鞋固然令人喜欢,但却也非常让人“肉疼”,动不动就磨脚的遭遇让许多人对穿新鞋还是有一定的顾忌鞋子磨脚怎么办。即使是价值几百、上千

    生活 2021年10月30日
  • 手机不显示4g网络是怎么回事,手机没有4g网是怎么回事

    技术手机不显示4g网络是怎么回事,手机没有4g网是怎么回事若手机没有4G信号手机不显示4g网络是怎么回事,建议按照以下操作方法排查: 1、需要使用的是4G手机,且使用相应制式的4G电话卡;
    2、重新插拔SIM卡尝试,条件

    生活 2021年10月30日