对contentOffset的一点理解

之前有面试问到这个,由于之前了解的不是很深,所以回答错了。这次好好总结一下。

在 UITableView 和 UIScrollView 中,contentOffset 是经常会用到的一个属性。那么它的正负到底如何去判断,和上拉下拉又有什么关系呢?

我们已知控制器的坐标原点是屏幕的左上角(0,0)点,这样说不是很严谨但是方便理解。以下举例都是建立在这个假设之上。

那么,基于这个原点,在屏幕之上。坐标往右往下,都是正数往上往左,都是负数。这是我们理解的前题条件。

官方给出的 contentOffset 定义:
The point at which the origin of the content view is offset from the origin of the scroll view.
是scrollview当前显示区域顶点相对于frame顶点的偏移量。通俗的讲就是 ScrollView 内容 相对于 屏幕原点的位置。

所以,当 ScrollView(UITableView)向上滑动的时候,content 的大部分视图会滑动到我们看不到的屏幕上方。这时,content的原点坐标是(0, y<0)。因为在屏幕原点上方,所以是小于0的。那contentOffset的坐标是多少呢?
它的y坐标是:0-y=-y, (其中, y<0)。故,contentOffset的y坐标大于0

同理,当 ScrollView(UITableView)向下滑动的时候,就如我们下拉刷新的时候一样。这时,content的原点坐标是(0, y>0)。因为在屏幕原点下方,所以是大于0的。那contentOffset的坐标是多少呢?
它的y坐标依然是:0-y=-y, (其中, y>0)。故,contentOffset的y坐标小于0

这样,我们可以看出,contentOffset的实际坐标位置是:content内容视图原点坐标的实际位置相反数。
这个例子是一种的特殊情况,只是为了方便理解。

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

推荐阅读更多精彩内容

  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 2,554评论 1 14
  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 4,775评论 1 9
  • 周一公司开会时,部门老大说了这么一句话:在发生冲突时,先想自己的问题,对于是他人的问题也不必执着和纠缠,重要的是把...
    小easy阅读 286评论 0 3
  • 我一辈子都不会想到自己 会对多少人产生影响 虽然我非常希望有人记得 曾经有我存在过这个世界 曾经有我出现在一些人的...
    二尸阅读 332评论 0 2
  • 古风(其三) 秦皇扫六合,虎视何雄哉。 飞剑决浮云,诸侯尽西来。 明断自天启,大略驾群才。 收兵铸金人,函谷正东开...
    远逝之风yuki阅读 305评论 0 1