Scrollview 自动到达顶部或底部 之 verticalNormalizedPosition

在我们使用scrollview的时候就会有这样的需求,我滑动到某个高度,当我刷新了我的列表需要到达顶部,或者底部。
就比如我们的聊天框,当信息来的时候帮你设置到最下面。
那么我们可以如何实现这个效果呢?

我们知道scrollview是可以控制他的postion来达到滑动的效果,当你滑动时你的positon也会跟着改变。
我们可以直接设置

ScrollRect scollview = GameObject.Find("scollview").GetComponent<ScrollRect>();
 scollview.gameObject.transform.localPosition = new Vector3(0,0,0);

这样就可以设置到顶部,但是会出现一个问题就是,如果你是在滑动的过程中去设置这个localpostion他会瞬间到顶点
但是滑动的那个力还会存在就会影响体验,这是因为ScrollRect 类里有一个velocity这是一个vector2的变量,他储存的
是不同方向的力0是水平方向,1是垂直方向,如果你想清空滑动的力你只需要设置scollview.velocity[0] = 0;或者
scollview.velocity[1] = 0;

其实官方也有一个方式实现,也就是verticalNormalizedPosition

scollview.verticalNormalizedPosition = 0;
scollview.horizontalNormalizedPosition = 0;

水平0是左边,垂直0是底部
水平1是右边,垂直1是顶部

实际verticalNormalizedPosition源码里也有设置localPosition 和velocity
如果使用verticalNormalizedPosition出现没有到达底部,距离底部差一点点,可以尝试下一帧使用verticalNormalizedPosition

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

推荐阅读更多精彩内容