关于cocos tableView的数据刷新后位置不变

有时候tableView刷新,数据变了,新的tableView高度可能变了,如果我们此时下滑了一定距离,刷新数据后tableView回到顶部了,想回到原来位置怎么办呢?

首先知道listView是继承scrollView的,创建出tableView之后,可以通过getInnerContainerSize().height得到tableView的高度,getInnerContainerPosition()得到tableView的位置,,剩下的就是根据新的数据计算出偏移量就可以了。

更新数据之前,先得到当前高度h1 = getInnerContainerSize().height,得到当前位置 pos1 = getInnerContainerPosition().y

更新数据后,先重置tableView,调用reloadData()

重置后,reloadData又回到了最上面,下面计算出新的偏移量就可以了

得到新的高度h2=getInnerContainerSize().height,调用setInnerContainerPosition设置偏移量setInnerContainerPosition(cc.p(0, -h2 + (h1 + pos1))),

-h2 + (h1 + pos1))的计算原理就是原来的位置加上新旧tableView的差值

在调用reloadLayout加载一下就可以了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值