在我们使用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
网友评论