UIScrollView原理解析

2023-05-16

了解更多IOS底层原理知识,关注腾讯课堂八点钟学院IOS高级开发 

 IOS学习交流群 431449751;

在我们app中,UIScrollView几乎贯穿我们整个项目业务,为什么这么说,我们来看UITableview,UICollectionView,UITextView等都是继承UIScrollView的,而这些控件使用频率之高,想大家都知道,所以知道UIScrollView的底层实现还是有必要的。扎实的基础就像楼盘的地基,地基越稳就可以越高

1、UIScrollView滑动技能,是不是感觉有点神奇,居然能滑动,马上揭开他滑动的底层实现。


首先我们来查找UIScrollView能滑动的来源,他继承UIView,所以不是来自父类,那么我们来看系统文件


发现有一个panGestureRecognize滑动手势,我们来做一把测试,把这个手势移除


结果scrollView失去了滑动的效果,我们找到了答案,滑动原来是panGestureRecognize来实现的。

2、那么滑动过程中子视图一起移动的效果是怎么做到的呢,其实很简单

首先我们必须知道UIView的frame和bounds的作用

frame是相对父视图坐标系来决定自己的位置和大小,在开发过程中会经常用到,不多解释

但bounds是相对于自身坐标系的位置和尺寸的,什么意思呢,我们去修改视图bounds的origin试试,我们发现视图本身没有发生变化,但是它的子视图的位置却发生了变化,因为bounds的origin值是基于自身的坐标系,当自身坐标系的位置被改变了,里面的子视图肯定得变化,bounds和panGestureRecognize就是实现UIScrollView滑动效果的关键技术点。

3、我们了解原理,那么我们自己来实现一个UIScrollView,撸上代码,一切尽在代码中



看完是不是发现UIScrollView的滑动原理很简单!是的,就这么简单

了解更多IOS底层原理知识请关注腾讯课堂八点钟学院IOS高级开发

https://ke.qq.com/course/171725





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIScrollView原理解析 的相关文章

  • 阿里云盘使用教程

    阿里云盘 阿里云盘是阿里巴巴全球技术团队打造的一款 个人网盘 xff0c 有下载不限速 不打扰 够安全 易于分享等特点 xff0c 是一款为PC端用户提供云端存储 数据备份及智能相册等服务的网盘产品 阿里云盘官网 阿里云盘官网 https
  • 动态链接库的生成和使用,从入门到精通

    1 动态链接库和静态链接库的区别 静态链接库 LIB 由函数和数据编译而成的一个二进制文件 使用时 xff0c 在编译链接阶段 xff0c 由链接器从库中复制这些函数和数据 xff0c 并把他们与应用程序的其他模块组合起来创建最终的可执行文
  • 【java学习】数据类型

    1 xff0c 好的编码习惯 用Integer valueOf 替代new Integer xff1b Double同理 xff1b java9已经取消了new Integer xff0c 因为效率低 数字字面量里使用下划线以方便阅读 ja
  • QPushButton的四态样式

    QPushButton的四种状态 xff1a normal hover press disabled 代码 xff1a ui gt pushButton OK gt setStyleSheet 34 QPushButton border 0
  • 解决Vue报错:This dependency was not found

    错误发生场景 xff1a 也是在其他小伙伴发出的问题 xff0c 我也试了一下 xff0c 果然是这样 ERROR Failed to compile with 1 error This dependency was not found v
  • python 如何将收到的字符串中的编码部分显示为中文

    收到一个字符串 xff0c 中间的中文是以UTF 8编码形式传过来的 xff0c 收到的数据是这样的 xff1a 34 info 34 34 u767b u5f55 u6210 u529f 34 34 status 34 1 34 url
  • C语言printf输出百分号

    在C语言中 xff0c 如何输出百分号呢 xff1f 很简单 xff0c 只要在格式控制符里输入2个 就可以了 xff0c 例如 xff1a include lt stdio h gt int main int a 61 90 printf
  • 跟我一起学【MySql】之——MySql关键字

    下面列出MySQL所有关键字 xff0c 希望给使用MySQL的朋友提供一些参考帮助 ADDALLALTERANALYZEANDASASCASENSITIVEBEFOREBETWEENBIGINTBINARYBLOBBOTHBYCALLCA
  • 跟我一起学【数据仓库】之——需要避免的维度建模错误

    1 在事实表中放入文本属性 2 限制使用冗长的描述符以节省空间 3 将层次 xff08 级联的多对一关系序列 xff09 划分为多个维度 4 忽略跟踪维度的变化 合理运用缓慢变化维度的类型 xff0c 或者微型维度 5 使用更多的硬件解决遇
  • 跟我一起学【Powerdesigner】之——导入EXCEL生成逻辑模型

    表结构如图 xff1a 中文表名 英文表名 字段编码 字段名称 字段注释 字段类型 是否主键 是否可空 主键是否自增 user1 用户信息表1 id id id int 10 Y Y Y user1 用户信息表1 name 用户名 用户名
  • SELECT语句中的for update的用法(锁的运用)

    回复1 xff1a 一般FOR UPDATE用在PL SQL的游标里 xff0c 它的作用就是一个行级锁 xff08 对游标里所有的记录 xff09 xff0c 如果其他进程要更新这个游标行级锁里的记录 xff0c 就必须等待当前进程的CO
  • IIC读取:SDA_in SDA_out寄存器设置

    IIC读取语句里的语句 xff1a uchar DAC5571 check void uchar slaveack SDA in SCL H I2C delay slaveack 61 SDA read SCL L I2C delay SD
  • 如何快速的看懂别人的代码

    最近由于公司的一位前辈 xff0c 由于家中之事欲走 xff0c 所以接手了一个公司长期再做的项目 xff0c 自己也略有了解 xff0c 知道这个项目先后经过3人之手的煅炼 xff0c 现在这个交接棒传到了我的手中 xff0c 初见代码
  • 正则表达式匹配URL或者网址

    正则表达 一 正则表达式 xff1a http ftp https w 43 w 43 43 w 64 61 amp amp 43 w 64 61 amp amp 43 匹配 xff1a http regxlib com Default a
  • Python3 logging详解

    Python3中logging详解 官方文档中 xff0c logging的5个层级 xff1a 实例代码 xff1a def logs time prov type log name 61 prov 43 39 39 43 time fi
  • python3爬虫 链接+表格+图片 思路

    左侧部门列表每点击一次都有一个新的js网页出现 xff0c Request URL可以明确看出网址 xff0c 且每个网址都有其规律 xff1a 点击了三个部门 xff0c 返回的网址如下 xff0c 可以看出是有规律的 xff0c 此处d
  • 跟我一起学MongoDB之——可视化工具Compass的简单使用

    首先官方为大家介绍了一下MongoDB Compass的主要功能 xff1a 1 对数据的可视化 2 插入 修改 删除 3 调试 优化 进入Compass首先出现连接界面如下 xff08 此处我使用的是我操作时候的界面状态 xff09 直接
  • sqluldr2 报错ora-24345: A Truncation or null fetch error occurred

    source etc profile source root bash profile unset NLS LANG sqluldr2 user 61 sjgj sjgj 64 10 254 4 196 1521 client query
  • 车牌号校验正则表达式

    一 车牌号校验规则 1 常规车牌号 xff1a 仅允许以汉字开头 xff0c 后面可录入六个字符 xff0c 由大写英文字母和阿拉伯数字组成 如 xff1a 粤B12345 2 武警车牌 xff1a 允许前两位为大写英文字母 xff0c 后
  • 日语学习资料汇总(可下载)

    直播课程推荐 xff1a 妞妞 大家的日语 侧重考级 天易外语 旧版 标准日本语 娜娜 日语讲堂 津波老师 新版标准日本语 爱知 实用日语口语 在直播课程有预告http www fairage com total jsp type 61 1

随机推荐

  • 成熟男人与24岁女孩精彩对白(转)

    烛光晚餐 桌两边 xff0c 坐了男人和女人 我喜欢你 女人一边摆弄着手里的酒杯 xff0c 一边淡淡的说着 我有老婆 男人摸着自己的手上的戒指 我不在乎 xff0c 我只想知道 xff0c 你的感觉 你 xff0c 喜欢我嘛 xff1f
  • jsessionid的困扰

    问题 xff1a 向某银行发送支付请求时 xff0c 如果客户端cookie开启 xff0c 第一次请求时 xff0c 请求地址会自动增加一jsessionid 第二次没有问题 如果客户端cookie关闭 xff0c 无论如何请求地址会自动
  • 2级基本编程问题(—)(C++)

    问题 xff08 1 xff09 时间转换 问题描述 xff1a 给定一个从0秒开始计时的秒数 xff0c 请将其转换为X X X的格式 输入 xff1a 输入一个秒数n xff0c 且这个秒数0 n 86400 输出 xff1a 输出这个
  • 报错<BEA-101017> error:java.net.SocketException解决

    最近项目登录不了 xff0c 报错为 xff1a lt BEA 101017 gt error java net SocketException Connection reset by peer socket write error 最后问
  • 专业IT管理人才必备十大能力

    IT168 技术文章 作为IT技术人员 xff0c 相信没有一个人愿意永远在底层编写程序或做简单的系统维护 经过一段时间的技术和经验的积累 xff0c 很多人都向往更高层的职位 xff0c 但如何能成为一个专业的IT管理人才 xff0c 并
  • Modbus超时时间设置

    很多同学在做Modbus通讯时 xff0c 需要连续读取多个现场设备的数据 xff0c 虽然也编写了Modbus轮询的程序 xff0c 但是有时还是无法正常通讯 有时虽然能够保证通讯 xff0c 但是所有现场设备的轮询周期很长 本文将从MB
  • Modbus测试工具(Modbus Master调试工具)

    Modbus Poll是Modbus主设备模拟工具 xff0c 帮助Modbus通讯设备开发人员进行Modbus通讯协议的模拟和测试 xff0c 用于监控 测试 调试Modbus通讯设备 可以多个窗口中同时监控多个Modbus子设备 xff
  • 如何移除Googleads.g.doubleclick.net 病毒

    Related Symptoms about Googleads g doubleclick net Googleads g doubleclick net is very tricky and stubborn redirect viru
  • confluence 下admin用户密码恢复方法

    搭建了一个confluence平台 xff0c 日子久了 xff0c 管理员admin密码居然忘记了 以下恢复方法 xff1a 1 运行此sql 找到你的管理员帐户 xff1a select u id u user name u activ
  • guava 常用用法

    根据 指定大小对 一个大的list拆分成固定size的较小 list Lists partition list n List lt Foo gt foos 61 for List lt Foo gt partition Lists part
  • azkaban plugin在cdh cloudera环境下的配置之 HDFS插件

    安装HDFS插件 1 配置Hadoop环境变量 xff0c 在 etc profile文件末尾增加如下配置 xff1a span class token keyword style color 0077aa export span HADO
  • azkaban plugin在cdh cloudera环境下的配置之 jobtype插件

    复制编译后的jobtype到exec服务的插件下 xff0c cp dist jobtype packages azkaban jobtype span class hljs variable style color efdcbc git
  • ProxmoxVE安装及Ceph存储配置

    一 系统安装 1 选择agree 2 磁盘选择好之后就点击next 3 国家选择china 4设置密码 mail随便写 5 命名以及ip设置 6 等待安装完了之后又个reboot点击就好 此处不贴图了 至此系统安装已完成 二 系统配置 1
  • Mybatis常见面试题总结

    1 什么是Mybatis xff1f xff08 1 xff09 Mybatis是一个半ORM xff08 对象关系映射 xff09 框架 xff0c 它内部封装了JDBC xff0c 加载驱动 创建连接 创建statement等繁杂的过程
  • ubuntu进行dpkg安装时出现xxx依赖于xxx,然而:未安装软件包解决方法

    问题 这是我安装mysql workbench时出现的问题 xff0c 用来作为例子 wasi 64 wasi KPL W0X 下载 sudo dpkg i mysql workbench community 8 0 21 1ubuntu2
  • 基于嵌入式Linux的无线路由器设计——Bridged Adapter网桥模式

    现在嵌入式设备联网 xff0c 主要有两种模式 xff1a 以太网RJ 45 接口直接插网线上网 xff1b 3G 4G 模块拨号上网 随着无线终端设备的不断普及 xff0c 手机平板等无线设备对网络的需求也日益增加 本篇文章主要介绍基于嵌
  • ++( 自增运算符) 与 --( 自减运算符) 简单说

    自增运算符 43 43 与自减运算符 都是单目运算符的一种 根据它们所处操作数的位置可以分为前缀和后缀形式 xff0c 这两种形式在某些情况下产生的效果是一毛一样的 但我们更关心是它们的不同之处 xff0c 下来就看看它们不同之处的本质区别
  • 简单说说OSI网络七层模型

    如果你读过计算机专业 xff0c 或者学习过网络通信 xff0c 那你一定听说过 OSI 模型 xff0c 它曾无数次让你头大 OSI 是 Open System Interconnection 的缩写 xff0c 译为 开放式系统互联 O
  • 第七届中国项目管理办公室(PMO)发展大会亮点抢先看

    中国项目管理办公室 xff08 PMO xff09 发展大会是全国PMO专业人士的年度盛会 xff0c 是业内了解PMO前沿理论与资讯 分享PMO最佳实践经验 彰显PMO价值的高端会议交流平台 今年是PMO大会的第七年 xff0c 本届PM
  • UIScrollView原理解析

    了解更多IOS底层原理知识 xff0c 关注腾讯课堂 八点钟学院IOS高级开发 IOS学习交流群 431449751 xff1b 在我们app中 xff0c UIScrollView几乎贯穿我们整个项目业务 xff0c 为什么这么说 xff