| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> iOS开发笔记之八十五——带悬停效果页面的搭建方案总结 -> 正文阅读 |
|
[移动开发]iOS开发笔记之八十五——带悬停效果页面的搭建方案总结 |
*****阅读完此文,大概需要5分钟******?一、背景上图为大众点评App首页 带有悬停效果的页面是App中最为常见的页面了,几乎任意一款主流app都会有这种页面。这种页面要求整个页面可以滑动,当滑到一定高度时,要求某一部分做悬停,然后开始滑动下部的列表;这种页面我在业务中不止一次碰到,因为每次碰到都会因为调试花费较多时间;与此同时,这个页面框架较为复杂,不太好抽象出框架下沉,所以特意整理输出了一些方案,供大家参考,以便再碰到时,可以快速搭建这种页面; 二、搭建方案这种页面方案不是唯一的,目前把自己开发中调研过的集中方案介绍一下,每种方案都已经抽象出demo代码,具体的工程代码(源码在以下公众号里,敬请关注即可)。 跑一下example工程即可; 方案一: 利用UITableView的Plain Style的特性,可以悬停其section的方式实现; ?? 如图,这个tableview被分为以下几个部分,通过滑动时计算section的坐标,控制上滑到什么位置,所以这时候需要重写对应的scrollViewDidScroll:方法:
与此同时,当section滑到顶部时,外部list禁止滑动,并告知底部的list,可以滑动了;上面代码里通过设置self.bottomContentCell.objectCanScroll = YES; 实现;具体的实现参考代码:MDScrollHoverPage/PlanFirst/示例代码。 方案二: 类似方案一,不同的是,不需要重写外部list的sectionView,转为下部的bottomCell实现,其余逻辑保持不变。 方案三: 将要悬停的hoverView添加到ScrollView上,当滑动到一定位置后,改变hoverView的层级来控制悬停。
方案四: 将要悬停的hoverView添加到self.view上,和tableview在统一层级,同时设置tableView的tableHeaderView为topView,如下: hoverView始终和tablview在同一层级,仅通过一些必要的计算来实现悬停效果。 通过计算滑动的坐标,进行计算:
三、方案之间的对比以上的一二方案其实属于一类,三四属于一类; (1)其中第一、第二种方案,当我们滑动外层tableview时,当位移到达顶部时,外层tableview需要先停下来,需要再次滑动才可以滑动下部tableview;我们目前所在的很多详情页,个人资料页都是这种方案; (2)第三四方案,由于不涉及多tableview的问题,可以规避上述问题,整个列表一体,及时到达悬停位置依然可以继续滑动,目前云音乐的我的tab下的页面就是类似的实现; (3)对比scrollViewDidScroll方法中的实现逻辑来看,第一二种方案较为复杂,需要较多的代码逻辑控制,第三四种方案较为简单一些;其中第二种方案是第一种方案的改进,第四种方案是第三种方案的改进。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 0:02:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |