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

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

转载于:https://juejin.im/post/5a684e936fb9a01c9c1f3254

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值