如果您对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的更多相关文章

  1. DataGridView控件用法二:常用属性

    通常会设置的DataGridView的属性如下: AllowUserToAddRows - False指示是否向用户显示用于添加行的选项,列标题下面的一行空行将消失.一般让其消失.AllowUserT ...

  2. iOS开发UI篇—UIScrollView控件介绍

    iOS开发UI篇—UIScrollView控件介绍 一.知识点简单介绍 1.UIScrollView控件是什么? (1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限 ...

  3. UIScrollView控件详解

    一.知识点简单介绍 1.UIScrollView控件是什么? (1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限 (2)当展⽰示的内容较多,超出⼀一个屏幕时,⽤用户可 ...

  4. UIScrollView控件介绍

    1.UIScrollView控件是什么? (1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限 (2)当展⽰示的内容较多,超出⼀一个屏幕时,⽤用户可通过滚动⼿手势来查看 ...

  5. iOS开发UI篇—UIScrollView控件实现图片轮播

    iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播            二.实现代码 storyboard中布局 代码: #import "YYV ...

  6. 【转】 iOS开发UI篇—UIScrollView控件实现图片轮播

    原文:http://www.cnblogs.com/wendingding/p/3763527.html iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播 ...

  7. iOS开发UI篇—UIScrollView控件实现图片缩放功能

    iOS开发UI篇—UIScrollView控件实现图片缩放功能 一.缩放 1.简单说明: 有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对 ...

  8. [习题]日历(Calendar)控件的障眼法(.Visible属性),使用时才出现?不用就消失?

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/09/02/calendar_icon_visible.aspx [习题]日历(Cal ...

  9. wpf控件开发基础(5) -依赖属性实践

    原文:wpf控件开发基础(5) -依赖属性实践 知识回顾 接上篇,回顾这三篇讲了什么东西 首先说明了属性的现存问题,然后介绍了依赖属性的基本用法及其解决方案,由于依赖属性以静态属性的方式存在,进而又介 ...

随机推荐

  1. python学习笔记03 --------------程序交互与格式化输出

    1.读取用户输入内容 语法:input() 例: name = input('你的名字是?) print('你好'+name) 程序会等待用户输入名字后打印:你好(用户输入的名字) 注意:input接 ...

  2. UML类图(Class Diagram)中类与类之间的关系及表示方式(转)

    源地址:https://blog.csdn.net/a19881029/article/details/8957441 ======================================== ...

  3. codeforces 359E Neatness(DFS+构造)

    Simon loves neatness. So before he goes to bed, Simon wants to complete all chores in the house. Sim ...

  4. css模仿微信弹出菜单

      css模仿微信弹出菜单 效果图: html: <div class="action-sheet-backdrop"> <div class="act ...

  5. this指针与const成员函数

    this指针的类型为:classType *const      // 即指向类类型非常量版本的常量指针 所以,我们不能把this绑定到一个常量对象上 ===>  不能在一个常量对象上调用普通的 ...

  6. 第二十次ScrumMeeting会议

    第二十次Scrum Meeting 时间:2017/12/10 地点:新主楼1039 人员:蔡帜 王子铭 游心 解小锐 王辰昱 李金奇 杨森 陈鑫 赵晓宇 照片: 目前工作进展 名字 今日 明天的工作 ...

  7. 20145214 《Java程序设计》第8周学习总结

    20145214 <Java程序设计>第8周学习总结 教材学习内容总结 日志API 使用日志的起点是Logger类,Logger类的构造函数标示为protected,不是java.util ...

  8. jspSmartUpload上传下载使用例子

    --------------------------------------------------------------------- ServletUpload.java 上传 package ...

  9. ACM 第八天

    数据结构和算法目录表 数据结构和算法目录表   C C++ Java 线性结构 1. 数组.单链表和双链表 2. Linux内核中双向链表的经典实现  数组.单链表和双链表  数组.单链表和双链表   ...

  10. lintcode-162-矩阵归零

    162-矩阵归零 给定一个m×n矩阵,如果一个元素是0,则将其所在行和列全部元素变成0. 需要在原矩阵上完成操作. 样例 给出一个矩阵 [ [1, 2], [0, 3] ] 返回 [ [0, 2], ...