contentSize, contentInset 和 contentOffset的含义

3个都是UIScrollView的属性,但是类型并不一样:

ObjectivC@property(nonatomic) CGSize contentSize
struct CGSize { CGFloat width; CGFloat height; };
@property(nonatomic) CGPoint contentOffset
struct CGPoint { CGFloat x; CGFloat y; };
@property(nonatomic) UIEdgeInsets contentInset
typedef struct { CGFloat top, left , bottom, right ; } UIEdgeInsets;
  • contentSize 是scrollview中的一个属性,它代表scrollview中的可显示区域,假如有一个scrollview,它的frame为(0,0,320,480),而它的contentSize为(320,960).也就是说,这个scrollview整个内容的大小为(320,960),要通过上下滑动scrollview来查看(320,480)后的内容。
  • contentOffset 是scrollview当前显示区域顶点相对于frame顶点的偏移量,比如上个例子你拉到最下面,contentOffset就是(0 ,-480),也就是y偏移了480。contentOffset 的默认点为 CGPointZero
  • contentInset 理解起来比较困难, 它用4个数值表示contentView与scrollView的相对位置.具体看图吧.

值得注意的是:

1.contentOffset 坐标值,会随着用户滑动内容视图,而改变。
2.内容视图的contentOffset为负数时,在滚动视图中是看不到的。

3个属性一起使用可以确定contentView在scrollView中的位置:

  • contentView没有滚动时,通过contentInset.top/.left 2个相对与scrollView的距离知道contentView的位置;
  • contentView滚动时,通过contentOffset的坐标知道contentView左上角相对与scrollView左上角的距离,再通过contentSize即可知道contentView的具体位置;
  • contentView滚动到最终位置时, 固定在contentInset.right/bottom 2个位置;

文字描述太枯燥, 具体看我画的图:

《contentSize, contentInset 和 contentOffset的含义》

    原文作者:Channe
    原文地址: https://segmentfault.com/a/1190000002914912
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞