contentSize, contentInset 和 contentOffset的含义

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

@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个位置;

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

图片描述
图片描述
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容