美文网首页
Scrollview 自动到达顶部或底部 之 verticalN

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

作者: 摸狗 | 来源:发表于2019-11-21 15:54 被阅读0次

在我们使用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

相关文章

网友评论

      本文标题:Scrollview 自动到达顶部或底部 之 verticalN

      本文链接:https://www.haomeiwen.com/subject/esrtwctx.html