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)

相关推荐

  • windows php 命令(php环境搭建的主要步骤和方法)

    技术然后使用在Homestead中版本管理工具切换 PHP 版本然后使用在Homestead中版本管理工具切换 PHP 版本,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能

    攻略 2021年12月23日
  • 在Oracle中调用makefile的目标“代理nmhs”时出现错误怎么办?

    技术Oracle中调用makefile的目标“代理nmhs”时出错怎么办本篇文章给大家分享的是有关Oracle中调用makefile的目标“代理nmhs”时出错怎么办,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完

    攻略 2021年12月24日
  • 能歌善舞类似的成语,描述女子能歌善舞的成语

    技术能歌善舞类似的成语,描述女子能歌善舞的成语【滴粉搓酥】:粉:脂粉;搓:搓摩;酥:润滑柔美。脸上薄施脂粉能歌善舞类似的成语,用手搓摩润滑。形容女子肌肤柔嫩细腻。【婀娜妩媚】:婀娜:轻盈柔美;妩媚:姿态美好。轻盈柔美的姿

    生活 2021年10月30日
  • 数据计算和分析

    技术数据计算和分析 数据计算和分析一、Numpy(科学计算)
    1、概述
    1、概念
    ??Numpy 是一个专门用于矩阵化运算、科学计算的开源Python
    ??NumPy将Python相当于变成一种免费的更

    礼包 2021年12月15日
  • asmdisk对应的磁盘分区信息是什么

    技术asmdisk对应的磁盘分区信息是什么这篇文章主要介绍了asmdisk对应的磁盘分区信息是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

    攻略 2021年11月12日
  • MySQL中cron如何定时执行SQL语句

    技术MySQL中cron如何定时执行SQL语句这篇文章主要介绍MySQL中cron如何定时执行SQL语句,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql脚本内容如下:#!/bin/bash

    攻略 2021年10月29日