UIScrollView控件及其三个常用属性:contentSize、contentInset和contentOffset
如果您对UIScrollView控件感到难以理解,下面是本人自己对UIScrollView控件的理解方式,按照我的思路,理解UIScrollView控件非常容易!
我对UIScrollView的构成理解:
UIScollView由上下两个层构成:UIScrollView控件 = 上层(空心四边形线框) + 下层(实心内容视图),且上、下两层紧紧靠在一起,构成一个完整的UIScrollView控件
上层是该UIScrollView的四边形线框,空心,UIScrollView的frame指的就是这个空心四边形线框的frame;
下层才是该UIScrollView的真正的内容视图,实心,UIScrollView使用该内容视图来对外展示内容,即这个内容视图即常说的UIScrollView的contentView;
UIScrollView的contentSize属性就决定着这个内容视图的大小.
我对UIScrollView的滑动行为的理解:
当我们的手指在UIScrollView控件中上、下、左、右方向滑动时,以查看该UIScrollView控件对外展示的上、下、左、右四个部分的内容时,
记住:这时,其实,我们的手指真正滑动的是该UIScrollView的下层(内容视图),而上层始终固定不动,因为我们上面说了,上层的frame始终是UIScrollView的frame
这是因为当我们的手指在UIScrollView控件中滑动时,由于其上层是空心四边形线框,而其下层却是实心内容视图,
所以,其实,我们的手指穿过了上层(空心四边形线框),抵达到(即触摸到)下层(实心内容视图),进而,这时,我们的手指进行滑动,就滑动了这个下层(内容视图),
所以,其实,我们的手指真正滑动的是该UIScrollView控件的下层(内容视图),而上层始终是固定不动的.
我对UIScrollView控件的三个常用属性的理解:UIScrollView控件的这三个常用属性,初学者通常都觉得较难理解
UIScrollView三个基本的属性:contentSize、contentInset和contentOffset
contentSize: The size of the content view. Default value CGPointZero
该属性决定着UIScrollView的内容视图的大小,即UIScrollView的可滑动区域的大小,
UIScrollView的内容视图指的就是该UIScrollView的可滑动区域
比如UIScrollView控件的frame = (0 ,0 ,320 ,480),该控件的 contentSize = (320 ,960),代表你的UIScrollview仅能上下滑动,不可左右滑动,
且其滑动区域的高度(上下范围)为该控件的frame的高度的两倍,而宽度(左右范围)等于frame的宽度。
使用UIScrollView时必须明确赋值该属性,否则,由于该属性的默认值就是CGSizeZero,
所以,未被赋值该属性的UIScrollView控件不可被滑动,即其既不能被上下滑动,也不能被左右滑动
contentOffset:The point at which the origin of the content view is offset from the origin of the scroll view.Default value CGSizeZero
该属性决定着UIScrollview的下层(内容视图)的bounds点当前距上层bounds顶点的距离大小,
即这个距离就是我们常说的UIScrollView的内容视图的bounds点偏移UIScrollView的bounds点的偏移量,
比如上面那个例子,你的手指持续向上滑动屏幕,直至手机屏幕完全展示出该UIScrollView的内容视图的下半部分,
这时,contentOffset就是(0 ,480),
也就是说,在y方向上,内容视图的bounds点距离上层的bounds点为480点,即内容视图在y方向上的偏移量为480点,即contentOffset.y的值为480
而在x方向上,内容视图的bounds点距离上层的bounds点为0,即内容视图在x方向上的偏移量为0,即contentOffset.x的值为0
contentInset:The distance that the content view is inset from the enclosing scroll view.
Default value UIEdgeInsetsZero.
can be used to add additional scroll area around content
该属性决定着当内容视图的滑动行为停止后,该内容视图的各边距上层对应各边(逆时针:上距上、左距左、下距下、右距右)的距离大小
所以,这个属性能够用于在下层四周增加额外的滑动区域,而上层始终固定不变
UIScrollView控件及其三个常用属性:contentSize、contentInset和contentOffset的更多相关文章
- DataGridView控件用法二:常用属性
通常会设置的DataGridView的属性如下: AllowUserToAddRows - False指示是否向用户显示用于添加行的选项,列标题下面的一行空行将消失.一般让其消失.AllowUserT ...
- iOS开发UI篇—UIScrollView控件介绍
iOS开发UI篇—UIScrollView控件介绍 一.知识点简单介绍 1.UIScrollView控件是什么? (1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限 ...
- UIScrollView控件详解
一.知识点简单介绍 1.UIScrollView控件是什么? (1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限 (2)当展⽰示的内容较多,超出⼀一个屏幕时,⽤用户可 ...
- UIScrollView控件介绍
1.UIScrollView控件是什么? (1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限 (2)当展⽰示的内容较多,超出⼀一个屏幕时,⽤用户可通过滚动⼿手势来查看 ...
- iOS开发UI篇—UIScrollView控件实现图片轮播
iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播 二.实现代码 storyboard中布局 代码: #import "YYV ...
- 【转】 iOS开发UI篇—UIScrollView控件实现图片轮播
原文:http://www.cnblogs.com/wendingding/p/3763527.html iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播 ...
- iOS开发UI篇—UIScrollView控件实现图片缩放功能
iOS开发UI篇—UIScrollView控件实现图片缩放功能 一.缩放 1.简单说明: 有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对 ...
- [习题]日历(Calendar)控件的障眼法(.Visible属性),使用时才出现?不用就消失?
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/09/02/calendar_icon_visible.aspx [习题]日历(Cal ...
- wpf控件开发基础(5) -依赖属性实践
原文:wpf控件开发基础(5) -依赖属性实践 知识回顾 接上篇,回顾这三篇讲了什么东西 首先说明了属性的现存问题,然后介绍了依赖属性的基本用法及其解决方案,由于依赖属性以静态属性的方式存在,进而又介 ...
随机推荐
- 游戏AI之群组行为
群组行为指的是多个对象组队同时进行的情况.每个boid需满足分离,队列,凝聚三个基本的规则. 分离:群组中的每个个体都与相邻的个体保持一定的距离. 队列:群组以相同的速度,向相同的方向移动. 凝聚:与 ...
- Python全栈 进阶(进阶内容都在这了)
原文地址 https://yq.aliyun.com/articles/632754?spm=a2c4e.11155435.0.0.23eb3312feB6dG ................... ...
- 安迪的第一个字典 (Andy's First Dictionary,UVa10815)
题目描述: #include<iostream> #include<string> #include<set> #include<sstream> us ...
- Sharepoint 2013与Sharepoint 2016的功能对比
开发人员功能 SharePoint Foundation 2013 SharePoint Server 2013 Standard CAL SharePoint Server 2013 Enterpr ...
- 持续集成之TeamCity 配置
xcopy /S /Y CodeFirstDemo\CodefirstDemo.Web D:\publish\welcome\Web
- iis 10 重新注册iis
iis 10 使用该命令 提示 版本不支持 C:\WINDOWS\system32>c:\windows\microsoft.net\framework64\v4.0.30319\aspnet_ ...
- HADOOP docker(九):hdfs权限
1. 概述2. 用户身份标识3. 组映射4.关于权限的实现5.文件系统API的变更6.应用程序shell的变更7.超级用户8.ACLs9.ACL 文件系统API10.ACL命令11.参数配置12.总结 ...
- 测试下markdown!
目录 目的 代码 目的 测试markdown 代码 void static void main(args String[]){ System.out.println("hollw" ...
- [C++] OOP - Virtual Functions and Abstract Base Classes
Ordinarily, if we do not use a function, we do not need to supply a definition of the function. Howe ...
- vue.js学习之 打包为生产环境后,页面为白色
vue.js学习之 打包为生产环境后,页面为白色 一:配置问题 当我们将项目打包为生产环境后,在dist文件夹下打开index.html,会发现页面为白色. 1:打开config>index.j ...