如果您对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. Maxscript-获取选中文件

    Maxscript - 获取选中文件 使用 .Net 的方法弹出窗口选择文件,并范围所有选中文件的路径“” Fn Fun_GetFilePaths strTitle strFilter = ( dia ...

  2. Consul 简介

    Consul包含很多组件,总体来数,Consul是一种服务发现和配置工具. 服务发现:一个客户端提供自己的服务,例如api服务,或者mysql服务,另一个客户端就可以利用Consul通过DNS或者ht ...

  3. 为什么说session依赖cookie,以及cookie的常用知识

    session的用法 session在Flask中通常用做设置某些页面的权限,比如某些页面必须要登录才可以看到,登录的信息或标志就放到session中.它的使用过程如下: 在整个flask工程的启动文 ...

  4. leetcode-打家劫舍(动态规划)

    你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给定一个代表每 ...

  5. 【springmvc+mybatis项目实战】杰信商贸-5.生产厂家DAO+SERVICE+CONTROLLER+JSP+配置文件

    上一篇我们创建了工程和一个Factory的po对象(javaBean),我们也写好了Mapper的映射文件,接下来我们来完成生产厂家的DAO与SERVICE,以及CONTROLLER,还有做显示的JS ...

  6. java基础-Comparator接口与Collections实现排序算法

    java 排序Comparable和Comparator使用 java提供了两个排序用的接口Comparable和Comparator,一般情况下使用区别如下: Comparable 接口用于类的固定 ...

  7. win32绘制自定义类窗口导致绘制11个窗口的解决办法

    上网查了一圈也没有找到解决问题的办法,一旦创建了一个窗口,并且在过程函数中绘制窗口,尤其是一些非子窗口的自定义类窗口,都会生成11个窗口(算上主窗口就是12个),但是使用系统通用控件就不会有这种情况的 ...

  8. StrBlob类——智能指针作为成员

    /* 管理string的类 使用vector来管理元素 由于类对象被销毁时相应的元素成员也将销毁 所以需要将vector保存在动态内存中 */ //该程序鲁棒性不强,没有考虑到vector为空的情况 ...

  9. Java学习个人备忘录之接口

    abstract class AbsDemo { abstract void show1(); abstract void show2(); } 当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类 ...

  10. Java 集合框架之 Map

    Hashtable Hashtable 的实例有两个参数影响其性能:初始容量 和加载因子.容量 是哈希表中桶 的数量,初始容量就是哈希表创建时的容量.注意,哈希表的状态为 open:在发生“哈希冲突” ...