scrollview循环列表抖动问题

请添加图片描述

由于我们是不等高的,在将底部的item,拿到顶部进行复用的时候,会出现这个问题。

1.我们的content的top值一定要为0,下图经过验证,可以不为0,忽略1这个点。

在这里插入图片描述
在这里插入图片描述

红色item,依然保持在同一个位置,所以top为多少无妨。

2.当我们从底部拿一个item到顶部使用的时候,需要强制刷新下高度:
在这里插入图片描述

如图:

比如这里的8被拿到顶部使用,此时Temp(Clone)1就被视为第二个节点, 此时他的anchorposition,应该是Temp(Clone)8的高度。但是我们发行虽然
在这里插入图片描述
在这里插入图片描述
Temp(Clone)7的实际高度为291,那么此时Temp(Clone)1的anchorpostion的y值应该是-291,但是我们打印的时候发现他的高度为-257,所以,他获取的还是老的Temp(Clone)7的高度257的取反。这个下一帧就会变得正确,但是会出现一跳的情况。
那么怎么刷新呢?
使用:

CFLayoutRebuilder.MarkLayoutForRebuild(m_Content); //这句话要有
Canvas.ForceUpdateCanvases(); //当末端的一个item,拿到顶端被使用之后,其item的高度要强制刷新一下,否则还是保留之前的的高度,这样会出现抖一下的问题

即可。

   int childCount = m_Content.childCount;
   for (int i = 0; i < childCount; ++i)
    {
    
    
        RectTransform t = m_Content.GetChild(i) as RectTransform;
        Debug.LogError("child " + t.name + "  " + t.anchoredPosition);
    }

猜你喜欢

转载自blog.csdn.net/wodownload2/article/details/120951625
今日推荐