在iOS中,UIScrollView(继承UIKit.framework重的UIView)是UIKit.framework中的一个可以滚动的视图,最常见的UITableView、UICollectionView就是继承了UIScrollView。跟所有的view一样,UIScrollView有一个属性frame,同时其还具有另外三个属性:
@property(nonatomic) CGPoint contentOffset; // default CGPointZero
@property(nonatomic) CGSize contentSize; // default CGSizeZero
@property(nonatomic) UIEdgeInsets contentInset; // default UIEdgeInsetsZero. add additional scroll area around content
contentSize,即UIScrollView的可以滚动的区域。手机的屏幕是固定的,但是如果要滚动查看比手机屏幕更大的图片,那么就需要设置contentSize属性,将其设定为图片的大小。可以将UIScrollView看成具有上下两层的复合视图,frame控制着上层的大小,就是我们所看到的区域,上层固定不动,显示的变化,是由下层的滚动来控制。而滚动区域的大小则有contentSize来控制。例如:若frame=(0,0,320,480),contentSize=(320,960),代表UIScrollView可以上下滚动,滚动区域为frame大小的两倍。
contentOffset,即UIScrollView当前显示区域的顶点相对于frame顶点的偏移量,例如上面的例子,如果拉到最下面,则contentOffset就是(0,480),也就是y便宜了480。换句话说手机屏幕大小为(300,600),scrollView的frame为(0,0,300,600),contentSize为(0,0,300,1200),这时候能看到的区域大小为两个手机屏幕的大小,contentOffset为(0,0),则看到的上半部分内容,若为(0,600),可以看到后半部分的内容。
contentInset,即内容视图嵌入到封闭的滚动视图的距离,可以理解为内容视图的上下左右四个边扩展出去的大小。
总结如下:
contentInset,增加内容视图的四周的边距
contentOffset,通过指定偏移点(相当于内容区域的左上角起点)来显示内容的指定区域
contentSize,指定scrollView的内容大小