这个应该是一个很基本的功能,但是在onEnable里面调用 scrollToBottom 滚动条只能滚动一半 content根本不动。在start里面调用scrollToBottom 滚动条倒是滚动到底部了,妈蛋content还是丝毫不动。如果这个添加新的item到content里面并调用scrollToBottom这个时候倒是有效了。
现在要搞的是如何在初始化UI的时候让content滚动到底部!!!!!!!!!!!
这个应该是一个很基本的功能,但是在onEnable里面调用 scrollToBottom 滚动条只能滚动一半 content根本不动。在start里面调用scrollToBottom 滚动条倒是滚动到底部了,妈蛋content还是丝毫不动。如果这个添加新的item到content里面并调用scrollToBottom这个时候倒是有效了。
现在要搞的是如何在初始化UI的时候让content滚动到底部!!!!!!!!!!!
设置padding试试
content内容是动态增加的如果是垂直滚动的话,这要么底部不固定要么顶部不固定,如果都固定了content高度就固定了,那垂直方向就没法滚动了。我这边的做法是左右固定且顶部固定使底部变化,这个在用的过程中没问题。问题是在初始化的时候content高度超过了view的高度,要让content滚动至底部。目前测试在onEnable和start里面都没成功。不过是了下在onEnable或者start里面用scheduleOnce 在回调里面去调用 scrollToBottom 是可以的。只是这个样子样代码变味了。

原因你已经说到了啊,引擎怎么知道你会越来越长呢…… 如果你有悄悄变长,那原来滚动条的位置自然就不是在底部啦。
这里建议你自己调整动态添加的逻辑和设置 scrollToBottom 的优先级,例如吧 srollToBottom 放到 start 中,应该就可以啦~
是我没描述清除吧,在运行的过程中添加内容并调用scrollToBottom 是没有问题的。
现在的问题是在初始化这个scrollView的时候。比如我在onEnable里面一次新添加n个子节点并且content的长度大于view的长度。这个时候我调用scrollToBottom 就没法达到我预期的效果。现象之前已经描述过。
不管是在onEnable还是在start里面我都试过。
最后发现scheduleOnce可以达到目的。
creator的生命周期,改变节点的size的时候(比如你添加节点的时候,content的高度变化了),然后即时取数据,是不对的,需要有个时间来刷新,label也有这个问题,如果label的overfllow改变成resize_height,给他赋值一个字符串,节点高度变高了,但是在赋值下一句就取出label的高度,这个高度就是没有赋值之前的,所以,我的做法是都有一个延迟取值。
我尼玛也遇到这个问题,上面的代码有效果,但是场景页会闪一下
如果你content里有layout组件的话,也可以在添加完子节点后,调用updateLayout()刷新下content的高度。就不用加scheduleOnce了
cc.find(“chat/box/messages”, this.node).getComponent(cc.ScrollView).scrollToBottom(0);