关于scrollview的无限滚动效果实现
起因及需求:做过阅读器的朋友应该知道,一般的阅读器都会有仿真、平移等特效。最近赶上真空期,项目不忙,有点时间,于是想抓起来,总结点干货。
仿真翻页及平滑翻页的基本实现:
仿真翻页,使用系统自带的UIPageViewController可以轻松实现流畅的翻页效果,这里暂不详述,后面会专门做一期UIPageViewController实现中实现自定义手势翻页的专题。
平滑(或覆盖)翻页,有能力的可以自定义封装一个controller,用来抓取数据及回调事件,简单说一下实现步骤。
1.controller中主要包含两控制器,一个正在显示的,另一个待显示的
2.自定义tap及pan手势,实现相应的动画
3.待显示的控制器由外界传入,tap动画及pan(交互)动画过程中及结束时可以向外界传出相应的状态
4.动画结束后,记得将状态还原
(效果图暂且不附,免得影响主次)
进入正题,如何实现滚动翻页?
效果图先附一张

关于实现前的误区:
1.章节内容如何无缝拼接?
之前思维一直局限于仿真、平滑的设计思路,就是控制器中包含两控制器,一个当前显示、另一个待显示,然后通过切换数据的方式来实现前后翻页。其实滚屏也可以设计成这种,也就是把每章都分隔开来,滚到底部或顶部时加载另一章,然后显示新的内容即可。这样做能满足大致要求,但是达不到流畅的章节翻页效果。
2.章节拼接后如何实现流畅的滚动?
之前一直陷于一个思维误区,是搬数据还是搬视图?
搬数据:scrollView中仅仅显示一个内容视图,每次切换章节,将新的内容替换,并默默改变scrollview的偏移量,形成无缝切章节的效果。具体来讲内容分上中下三块,快滑到顶部时,底部内容置空,加载上一章,加载出来后,重新拼接上中下内容,此时注意修改scrollView的偏移量;快滑到底部时,一样的处理方式。
搬视图:scrollView中显示三个内容视图,内容视图中可嵌套别的视图,每次切换章节时,替换新内容,同样默默修改scrollView的偏移量,达成效果。
这两种其实本质一样,都能达成效果。但是搬视图能显示类型不一样的视图,具有更好的扩展性。但是这两种方式都需要结合scrollView滑动的代理,做细致的处理,比较难以实现。
仔细看过的同学应该已经发现,搬视图的方式不就是一个CollectionView就搞定了吗???何必去定义多个视图,我直接写几个cell出来复用不就完事了吗?省的自己还得为内存做优化。并且章节由cell隔开也能做一些更细致的处理,比如估算页码等。
代码等我后期写个demo吧,因为目前直接在SVN分支上修改的,公司的代码,你懂的。
关于scrollview的无限滚动效果实现的更多相关文章
- (转)15个非常棒的jQuery无限滚动插件【瀑布流效果】
原文地址:http://www.cnblogs.com/lyw0301/archive/2013/06/19/3145084.html 现在,最热门的网站分页趋势之一是jQuery的无限滚动(也即瀑布 ...
- 15个非常棒的jQuery无限滚动插件【瀑布流效果】
现在,最热门的网站分页趋势之一是jQuery的无限滚动(也即瀑布流).如果你碰巧观察Pinterest的网站,如Facebook,Twitter和deviantART的,你会发现无限滚动的动作,当旧的 ...
- HTML5+CSS3制作无限滚动与文字跳动效果
㈠用HTML5+CSS3做无限滚动效果 ⑴逻辑分析 ⑵实践示例 前5张图片为所有图片显示区,假设总长度为1100px: 后面出现的五张图片为克隆区,只是将前面的图片拷贝了一份: 然后将前五张和后五张的 ...
- jquery实现无限滚动瀑布流实现原理
现在类似于pinterest这类的表现效果很火,其实我比较中意的是他的布局效果,而不是那种瀑布流. 虽然我不是特别喜欢这种瀑布流的表现样式,但是还是写了几篇关于无限滚动瀑布流效果的文章,Infinit ...
- unity 背景无限循环滚动效果
背景无限循环滚动效果如下示: 步骤如下: 导入背景图片后,设置图片的格式,如下图: 2.图片格式也可以设置是Texture格式,但是Wrap Mode 一定要是Repeat[重复发生]:然后记得App ...
- Unity3d—做一个年月日选择器(Scroll Rect拖动效果优化)— 无限滚动 + 锁定元素
最近..... 废话不多说上效果图 用的是UGUI 我先说思路 通过判断元素的位置信息来改变Hierarchy的顺序 实现无限滚动 改变位置的同时也要不断的调整Content的位置防止乱跳 元素锁定就 ...
- js 实现图片无限横向滚动效果
门户网站好多都有产品无线滚动展现的效果: 测试demo1 -- 非无缝滚动(可以看出来从头开始的效果): css样式如下: .box{ width: 1000px; border: 1px solid ...
- iOScollectionView广告无限滚动(Swift实现)
今天公司里的实习生跑过来问我一般App上广告的无限滚动是怎么实现的,刚好很久没写博客了,就决定写下了,尽量帮助那些处于刚学iOS的程序猿. 做一个小demo,大概实现效果如下图所示: 基本实现思路: ...
- iOS开发——高级篇——图片轮播及其无限循环效果
平时APP中的广告位.或者滚动的新闻图片等用到的就是图片轮播这种效果,实现方式主要有两种,一种是ScrollView+ImageView,另一种则是通过CollectionView,今天总结的是Scr ...
随机推荐
- xxl-job使用遇到的问题
1.背景 最近公司在迁移定时任务,以前老的定时任务是基于quartz搭建的分布式集群服务,遇到如下几个瓶颈问题: 同一个任务只能有一个节点运行,其他节点不执行,导致性能低,资源也浪费 定时任务在抢占执 ...
- 重新整理 .net core 实践篇————依赖注入应用之援军[四]
前言 介绍第三方依赖注入框架Autofac,看看为我们解决什么问题. 下面介绍4个点: 命名注册 属性注册 aop 注入 子容器命名 正文 为什么我们需要使用第三方框架?第三方框架为我们做了什么?第三 ...
- IAP 订阅后端踩坑总结之 Google 篇
前言: 本文利用 python 作为后端服务器, 且接入的 Google Cloud Pub/Sub 服务作为实时开发者通知, 未记录具体支付流程的代码,只记录了再开发过程中较为耗时,个人认为比较麻烦 ...
- Tensor Core技术解析(下)
Tensor Core技术解析(下) 让FP16适用于深度学习 Volta的深度学习能力是建立在利用半精度浮点(IEEE-754 FP16)而非单精度浮点(FP32)进行深度学习训练的基础之上. 该能 ...
- TVM 架构设计
TVM 架构设计 本文面向希望了解TVM体系结构和/或积极参与项目开发的开发人员. 主要内容如下: 示例编译流程概述了TVM将模型的高级概念转换为可部署模块的步骤. 逻辑架构组件部分描述逻辑组件.针对 ...
- Gbps接口面向汽车应用
Gbps接口面向汽车应用 Gbps interfaces target automotive appications 巴黎--不久前,移动通信行业是一个领着芯片商的领头羊,命令坐着,脚跟着,然后翻身. ...
- python+selenium基础篇,句柄操作(多个页面切换)
1.我们打开网页有时候会开出多个页面,导致我们常常定位不到我们需要的元素,这种情况可能就是句柄的因素,如下图所示: 2.句柄切换代码如下: from selenium import webdriver ...
- 三色标记法与读写屏障, G1工作过程
https://www.jianshu.com/p/12544c0ad5c1 https://www.cnblogs.com/GrimMjx/p/12234564.html 自我总结和记忆: 为了解决 ...
- vscode使用版本控制git commit unstaged时提示对话框的设置
使用 vscode 版本控制提交代码时,如果有 unstaged file,会有一个弹出框: 选择 always 或者 never ,这个框下次就不再弹出了. 如果你想让他再次出现,请去setting ...
- 为IHttpClientFactory添加动态命名配置
某些时候我们需要为HttpClient动态配置一些东西, 例如证书等, 参考博问 如何使用IHttpClientFactory动态添加cer证书. 例如服务是一个回调服务, 而被回调方采用了自定义的h ...