为什么scrollview中手指向上滑时contentOffset是增大的
2016-03-30 10:14
393 查看
手指向上滑时contentOffset增大,我在开始的时候觉的这个很费解。
下面是contentOffset的定义(苹果的文档写的特别拗口,可读性上比微软的文档差太多):
The point at which the origin of the content view is offset from the origin of the scroll view.
翻译过来就是content view的原点相对于scroll view frame原点的偏移。
从视觉上效果上看,scroll view滚动时,我们会觉得scroll view的frame没有动,动的是content view。
因为scroll view的frame不动,则以其为坐标系,手指向上滑时,content view的原点在向上移动。
如果这么理解的话,手指向上滑动时,contentOffset应该减少才对。
后来看了一片文章才理解了为什么手指向上滑时contentOffset是增大的。
对于系统绘图来说,实际是从context view中截取frame大的一块儿出来,
然后把截取到的图贴到父视图上去。
所以在滚动时,从context view中截一块儿图的角度来看,
则是content view没有动,动的是从content view截图的这个窗口,这个窗口相当于scroll view的frame。
所以手指向上滑动,则截图的窗口需要向下移动,所以contentOffset是增大的。
从scroll view的实现者来说,这么作太自然了,也很方便。
下面是contentOffset的定义(苹果的文档写的特别拗口,可读性上比微软的文档差太多):
The point at which the origin of the content view is offset from the origin of the scroll view.
翻译过来就是content view的原点相对于scroll view frame原点的偏移。
从视觉上效果上看,scroll view滚动时,我们会觉得scroll view的frame没有动,动的是content view。
因为scroll view的frame不动,则以其为坐标系,手指向上滑时,content view的原点在向上移动。
如果这么理解的话,手指向上滑动时,contentOffset应该减少才对。
后来看了一片文章才理解了为什么手指向上滑时contentOffset是增大的。
对于系统绘图来说,实际是从context view中截取frame大的一块儿出来,
然后把截取到的图贴到父视图上去。
所以在滚动时,从context view中截一块儿图的角度来看,
则是content view没有动,动的是从content view截图的这个窗口,这个窗口相当于scroll view的frame。
所以手指向上滑动,则截图的窗口需要向下移动,所以contentOffset是增大的。
从scroll view的实现者来说,这么作太自然了,也很方便。
相关文章推荐
- ScrollView滚动条颜色的设置方法
- 刷新Activity中的scrollview示例(局部ui刷新)
- Android之ScrollView嵌套ListView和GridView冲突的解决方法
- Android实现两个ScrollView互相联动的同步滚动效果代码
- Android开发之机顶盒上gridview和ScrollView的使用详解
- Android控件之ScrollView用法实例分析
- android 实现ScrollView自动滚动的实例代码
- Android ScrollView只能添加一个子控件问题解决方法
- Android编程开发之ScrollView嵌套GridView的方法
- Android中实现监听ScrollView滑动事件
- Android ScrollView使用代码示例
- Android编程开发ScrollView中ViewPager无法正常滑动问题解决方法
- iOS应用开发中UIScrollView滚动视图的基本用法总结
- 开源中国 OsChina Android 客户端源码分析(3)可以拖拽的ScrollView
- android 中的 scrollView 控件的默认位置和子控件的焦点冲突
- 安卓布局应用学习代码附带效果图
- ScrollView ViewPager嵌套导致滑动冲突解决方案
- 四种方案解决ScrollView嵌套ListView问题
- XIB文件上UIScrollView的约束
- 在ScrollView中嵌套ListView时,ListView只能显示一行多一点