IOS中UIScrollView的contentSize、contentOffset和contentInset属性
IOS中,UIScrollView是可以滚动的视图,其中最常用的UITableView就是继承了UIScrollView。
跟所有的view一样,UIScrollView有一个frame属 性,同时,UIScrollView还具有contentSize、contentOffset和contentInset属性。我在学习中,就觉得其中 contentSize和contentOffset相对比较好理解,对contentInset就有点不太好理解。下面具体解释一下。
contentSize是UIScrollView可以滚动的区域。 在我的理解中,我把UIScrollView看成是具有上下两层的一个复合视图,frame控制着上层的大小,我们看到的UIScrollView的大小 实际就是frame的大小,上层固定不动,显示的变化,由下层的滚动来控制。而下层滚动的区域的大小,就是由contentSize来控制的了。例如:若 frame = (0, 0, 320, 480) contentSize = (320, 960),代表本UIScrollView可以上下滚动,滚动区域为frame大小的两倍。
contentOffset是UIScrollView当前显示区域的顶点相对于frame顶点的偏移量,例如上面的例子如果拉到最下面,则contentOffset就是(0, 480),也就是y偏移了480.
contentInset的API文档的解释是"内容视图嵌入到封闭 的滚动视图的距离"(哈,英文不是很好,翻译的不好)。可以理解为内容视图的上下左右四个边扩展出去的大小。contentInset的单位是 UIEdgeInsets,默认值为UIEdgeInsetsZero,也就是没有扩展的边。下面解释一下UIEdgeInsets,它是一个结构体,定 义如下:
- typedef struct {
- CGFloat top, left, bottom, right;
- }
分别代表着上边界,左边界,底边界,右边界,扩展出去的值。
结合这图片,就比较好理解这几个值的意义了。下面贴一下stanford大学iphone公开课的关于UIScrollView的图片展示,能帮助理解。
最新文章
- Visual Studio 实现 编写一套.net代码,同时编译到 多个平台,多版本的操作笔记
- 核心动画 (CAAnimationGroup)
- 阿里云Centos配置iptables防火墙
- Java之美[从菜鸟到高手演变]之Spring源码学习 - 环境搭建
- Material Design练习
- ICMP type code 对应表(转)
- javap(反汇编命令)详解【转】
- JAVA-数据库连接【转】
- 简单易懂的现代魔法——Play Framework攻略4
- c# winfrom DataGridView使行高不可改变,使列头高度不可改变,
- java web面试技巧,数据库面试,java web轻量级开发面试教程
- 学习Yii框架,有哪些比较好的网站
- CentOS 6.5安装MongoDB 2.6(多yum数据源)
- idea 控制到不能输出中文
- IE中的console.log
- Java基础83 JSP标签及jsp自定义标签(网页知识)
- jenkins multijob 插件使用
- redis 连接池的一些问题
- break和continue使用
- AtCoder - 1999 Candy Piles
热门文章
- leetcode — reorder-list
- [js高手之路]html5 canvas动画教程 - 边界判断与反弹
- 使用MyBatis时接收值和返回值选择Map类型或者实体类型
- iOS 动画篇 之 Core Animation (一)
- SpringCloud学习笔记(7)——Sleuth
- Virtualbox虚拟机安装与设置
- 简易安卓APP
- 从Unity中的Attribute到AOP(二)
- 美团Java团队分享:如何实践支付通道自动化管理
- AccessibilityService+WindowManager+SurfaceView开系统权限