scrollview复用节点_ScrollView 两个控件复用, ScrollView 的极限优化
通常的 scrollView 用来进行轮播图的展示.网易新闻中标签对应的页面切换展示
举个栗子:
分析:
创建容器 reusedViewControllers 来存放可以重用的 视图
创建容器 visibleViewControllers 来存放屏幕中显示的 视图
scrollView 出现的时候,
首先需要在屏幕中显示一张完整的视图,此刻 做两件事
1.将视图 1 添加到 scrollView
2.将视图 1 添加到visibleViewControllers进行保存
一个视图->二个视图
如果向左滑动,会出现 两个视图 的情况, 视图2 也需要加入显示.当开始滑动的那一刻,做三件事情.
在 (存放重用的 VC )reusedViewControllers中查找可重用的 VC, 如果没有找到就创建一个,存在得到的就是视图2 .
2.将视图2 添加到(可见的)visibleViewControllers中进行保存,如果视图2 是在reusedViewControllers中找到的(不是创建的),那么需要将视图2从reusedViewControllers中移除,相当于将视图2从reusedViewControllers移动到了visibleViewControllers.
3.将视图2添加到 scrollView 中进行个性设置
二个视图-->一个视图
如果继续左滑动,直到视图1看不见的那一刻,也做三件事情
1.讲视图1从 scrollView 中移除removeFromSuperview
2.讲视图1放进reusedViewControllers 中 等待被重用
3.将视图1中visibleViewControllers中移除 ,因为它已经属于 reusedViewControllers中了
直接上代码:
4B4707C0-1374-4D23-A362-6E31BEC09D03.png
懒加载
BD20777D-54B8-41A2-8ABD-90045338FDC5.png
3C83B2C8-8480-422B-A749-86C996F36718.png
E6A43A6B-9FBD-4C3F-80FD-08FDA7B9478E.png
2679759D-AC44-4C41-8CC6-C29C26582E2C.png
263E9DA7-1597-4B4A-B23E-6BBEA3144267.png
2DE12586-F211-47D8-BE0D-1AB9CF201214.png
懒得敲代码了,直接截图了.凑合看吧...
2222.gif
然后我们看打印的信息:
6D7ACB64-8651-4F9A-BDE7-D9C2C962D485.png
从打印信息 可以看出来 ScrollView 中有两个子控件 (隐藏竖直,水平滚动条的情况下)
两个控件的内存地址都是重复 的
这个适用于 imageView / tableView/ controller
可以用作来轮播图,
代码下载
scrollview复用节点_ScrollView 两个控件复用, ScrollView 的极限优化相关推荐
- mfc在两个控件间连线
新建一个对话框工程: 添加2个按钮,ID分别为IDC_ONE.IDC_TWO,再添加一个 GO!按钮: 为 GO!按钮添加单击消息处理函数: 单击代码: void CTwotwoDlg::OnButt ...
- Android两个控件叠在一起,如何让被挡住的控件显示出来
Android两个控件叠在一起,如何让被挡住的控件显示出来 问题 : 两个控件叠在一起,如何让被挡住的控件显示出来? 比如A,B两个控件,A被B挡住,目前A要显示出来,B不能被隐藏,A的高度只有那么一 ...
- Android 解决下拉刷新控件和ScrollVIew的滑动冲突问题。
最近项目要实现ScrollView中嵌套广告轮播图+RecyleView卡片布局,并且RecyleView按照header和内容的排列样式,因为RecyleView的可扩展性很强,所以我毫无疑问的选择 ...
- flutter如何让行Row的两个子控件分别左对齐和右对齐?
实现行中两个控件分别左对齐和右对齐,方式有很多,示例代码如下: 方式一:使用spaceBetween对齐方式 new Row(mainAxisAlignment: MainAxisAlignment. ...
- MFC high-speed-charting控件使用(添加垂直游标,两个控件的联动)
MFC high-speed-charting控件使用(添加垂直游标,两个控件的联动) 应用场景 最近参与的一个项目中涉及到在一个对话框中添加两个high-speed-charting控件,在两个控件 ...
- 树控件单击获取到的节点信息不是当前选中的节点_常用基本控件测试用例(一)...
树控件的测试外观操作 1)项目中的所有树是否风格一致 2)树结构的默认状态是怎样的.比如默认树是否是展开,是展开几级? 是否有默认的焦点?默认值是什么?展开的节点图标和颜色? 3)验证点开节点时页面 ...
- 多功能节点连线绘图控件Nevron Diagram for .NET使用方法及下载地址
Nevron Diagram for .NET是一个功能强大,世界上顶级的.NET图表控件.可扩展的图形报表构架,可以帮您创建功能丰富的Winforms及Webforms图表解决方案.这个产品构建于N ...
- elementui tree获取父节点_vue_elementUI_ tree树形控件 获取选中的父节点ID
一, vue_elementUI_ tree树形控件 1.1默认点击tree节点的第一个(注意不是checked选中) :expand-on-click-node="false" ...
- Android Studio两种控件布局
1.线性布局LinearLayout 常用属性: android:id #设置名称 android:layout_width //设置宽度,一般可取值为"match_parent" ...
最新文章
- mysql 手工注入教程_mysql手工注入步骤
- python字典通过键值获取键名,通过value获取key
- 框架:Hibernate和Mybatis的区别
- 三星笔试能带计算机吗,2021年三星笔试试题+经验谈
- Python-OpenCV 笔记4 -- 形态学操作(Morphological Operations)
- 为了OFFER,我加深学习,搞懂了栈
- shell脚本实现无密码交互的SSH自动登陆
- OPPO全球营销总裁沈义人宣布卸任,网友:第二天宣布入职小米?
- RFID芯片有什么用
- mongodb 集群shard_MongoDB 分片集群环境搭建
- 硬盘分区变为RAW文件系统后的解决办法
- 判断浏览器是否最小化
- 2019年度优秀安全内容合集
- 《专业主义》阅读摘要——作者:大前研一
- JVM-三色标记算法
- DedeCMS 标签使用方法汇总!
- Transformer靠什么基因,得以闯入CV界秒杀CNN?
- Android TV系列 TV APP分析(一)
- latex教程——读书笔记整理(三)——数学公式
- pandas一列拆分成多行