关于UIScrollview的contentoffset的问题,研究了好久,发现官方的文档很难理解
contentOffset 属性
官方解释:
The point at which the origin of the content view is offset from the origin of the scroll view.
我的理解:内容视图的起点相对于scrollview frame起点的偏移量
起点好说了,然后就是说偏移量我们怎么理解的问题,按照数学上的偏移的理解
ΔX=X2-X1(末位置减初位置) 要注意的是 位移是直线距离,不是路程。
应该是 终点的坐标减去起点的坐标 跟我的操作结果不符合,,。。。抛弃
再说说各大网站的理解:
contentSize表示的是整个Scrollview的内容大小,contentOffset表示的是当前显示区域顶点相对于frame顶点的偏移量。
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
contentInset 是scrollview中contentView.frame.origin与scrollview.frame.origin的关系,比如contentView的frame为(0,30,320,480),那么contentInset则为(0, 30),
scrollView.contentInset = UIEdgeInsetsMake(30, 0, 0, 0);
这样定义后,内容视图开始显示的坐标为(0,31)。
不知道你看明白了没有 反正我是没看明白 至少说的拉到最下面我都没理解啥意思 这直接关系到正负的问题 抛弃。。。。。
自己操作来实践吧
红色是scrollview 图片是现实内容的第一张(总共6张) 拉倒这个位置的 contentsize是(-81,-49)
往左上拖动(第一张快现实出来了)
此时的contensize是(115.5,47)
因此我的总结:contentsize的点坐标计算方法:frame的起点(0,0) 减去显示内容的起点坐标点比如(-115.1,-47)
也就是你看到的内容视图点得坐标的相反数 。。。。