LoopScrollRect icon indicating copy to clipboard operation
LoopScrollRect copied to clipboard

RefillCells() 接口功能有问题

Open wangeryin opened this issue 3 years ago • 2 comments

需求是打开界面的时候,不带动画地定位到对应index的Item. 看了接口说明,想着用RefillCells(index) 传入index来实现,但遇到以下问题: 1、当m_Content底下列表为空时,第一次调用RefillCells(index)并不会定位到index. 所以我试着连续调用两次RefillCells(index)来解决这个问题。 2、RefillCells(index) 无法定位到最后一个元素。得利用SrollToCellWithinTime(index, 0.01f)来实现定位到最后一个元素, 但是因为时间不为0, 所以还是不能实现我想的不带动画来定位到目标位置。 目前我自己的方案是在屏幕外定位到目标以后,再移回屏幕内。但还是觉得这个方案很不理想,希望官方大大处理下。修复下RefillCells() 接口问题。

以上测试是在我总元素是9个,两列4行,一个屏幕能显示三行的情况下出现的。 第一个问题是我想定位到index=7也就是第三行的情况下出现的。调用两次RefillCells(index) 能定位到第三行。但是我想定位到最后一行也就是index=8的时候就不行了,也就是我的第二个问题。

wangeryin avatar Jun 10 '22 08:06 wangeryin

目前跳转到最后一个元素特殊处理如下: if (index == characterConfigs.Count - 1) { characterScroll.SrollToCellWithinTime(index, 0.01f); Timer.Global.After(0.03f, AnimationOpen); } else { characterScroll.RefillCells(index); AnimationOpen(); }

wangeryin avatar Jun 10 '22 08:06 wangeryin

1、当m_Content底下列表为空时,第一次调用RefillCells(index)并不会定位到index. 所以我试着连续调用两次RefillCells(index)来解决这个问题。

这个是指一开始totalCount=0,然后同一帧修改totalCount之后RefillCells的情况么? 我本地测试了下这样做是没问题的

2、RefillCells(index) 无法定位到最后一个元素。

这里是因为RefillCells是考虑的头部元素情况,定位到最后一个元素会出现没法拉过去... 如果是希望定位到后面的,可以考虑RefillCellsFromEnd接口。

抱歉最近工作的事情比较忙,周末才有空处理issue。如果可以的话能否提供一个最小可复现例子?

qiankanglai avatar Jun 19 '22 14:06 qiankanglai