一、UIScrollView的四个属性
- frame : 矩形框,以父控件内容左上角为坐标原点
- contentSize:内容大小
- contentOffset:偏移量
- contentInset:内边距
这几个属性解释的比较抽象啊,下面我就打个比方来解释下这四个属性!!不当之处还望谅解O(∩_∩)O
假设我们透过一个方形的放大镜来回移动,来观察一张地图。(当然忽略这个放大镜的放大效果)
- frame:就是描述这个放大镜的大小(x,y的值只是相对于父控件来说的)
- contentSize:就是指的这张地图的尺寸
- contentOffset:就是指地图左上角和放大镜左上角这两个点的偏移量,就是用来描述我这个放大镜是放在地图的哪个位置的,就是用来决定我是观察地图的什么地方。
- contentInset:表示增加额外的滚动区域,地图的大小不变,本来放大镜只能在地图内滚动,增加了可以滚动到额外的区域。
二、UITableView的四个属性
因为UITableView是继承自UIScrollView的,所以理所当然UITableView也有上面的这四个属性。
我们大家都有一个印象,我们在创建tableView的时候,只要把数据源设置好了,那么这个tableView就能自动滚动了。说明是系统自动根据我们的数据源(每个cell的高度,多少个cell...)自动设置了contentSize的值。
那么我们可以认为contentSize就是值就是所有cell的尺寸了,其实不然,内容的大小确切来说是有三个部分组成的:所有cell的尺寸 + tableview的头尾控件 + 每个组的头尾控件
- 1.cell
- 2.tableHeaderView\tableFooterView
- 3.sectionHeader\Footer
只要记住tableView的内容尺寸只由这三个部分组成。(contentInset是不算入到内容尺寸中的)
三、控制器自带view的frame
在ios7之前,UIViewController和UITableViewController在刚创建的时候,自带view的frame是状态栏下面的整个区域。
在ios7之后,UIViewController的view的frame就改成了整个屏幕。 UITableViewController的tableView的frame还是和之前一样,是状态栏下面的整个区域。
(大家可以自己打印验证下...自己动手丰衣足食O(∩_∩)O哈哈~)