美文网首页
UIListView 刷新后恢复到刷新前的位置

UIListView 刷新后恢复到刷新前的位置

作者: Nimanggi | 来源:发表于2019-03-25 14:05 被阅读0次

UIListView在执行reload()后滚动层会重置到起始位置。
在某些场合下,可能会有刷新后保持滚动层原位置不变的需求,例如从列表中移除某个item后保持显示位置不变。
简单的处理办法:

UIListView继承了UIScrollView,这里要利用UIScrollView的属性去解决这个问题。

例如有一个这样的UIListView

listView = cc.ui.UIListView.new({
    direction = 1,
    alignment = 2,
    viewRect = cc.rect(0,0,660,725),
    async = true,
})
:setPosition(cc.p(22.8, display.bottom + 232))
:addTo(layer)

在删除或是添加操作时,保存当前滚动层的位置。

scrollViewPosition = listView.position_

这个position_是UIListView从UIScrollView继承过来的属性。
在使用时直接【.】出来,使用listView.scrollNode:getPosition()得到的内容有问题(原因没有仔细调查)所以直接上属性了。

在刷新之后重新设置滚动层位置

listView.scrollNode:setPosition(scrollViewPosition)

scrollNode既是UIListView的滚动层Node,也是从UIScrollView中继承来的。

另外还可以通过UIListView的scrollTo方法(从UIScrollView中继承来的),来设置当前滚动层位置。
如下:

-- 滚动到最下
local tempHeight = 0
for i,v in ipairs(self.memberList.items_) do
    tempHeight = tempHeight + v:getBoundingBox().height
     if tempHeight > self.memberList.viewRect_.height then
        self.memberList:scrollTo(0, 0) 
     end
end

相关文章

网友评论

      本文标题:UIListView 刷新后恢复到刷新前的位置

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