嵌套的ContentSizeFitter刷新

Posted woodjay

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌套的ContentSizeFitter刷新相关的知识,希望对你有一定的参考价值。

嵌套的ContentSizeFitter刷新

在做编辑器的时候,有些配置选项需要有可以折叠展开这个功能,如图所示:

技术图片

技术图片

我这边内容布局用了ContentSizeFitter这个组件,这个东西刷新需要隔一帧,我每个一帧给ContentSizeFitter刷新一次,发现这个虽然可以实现正确刷新显示,但是会闪一下。之后看了宣雨松大神的这篇文章 Unity3D研究院之ContentSizeFitter同步立即响应回调,改成了同步刷新就不闪了!

IEnumerator Refresh(Transform trans = null)
{
    if (trans != null)
    {
        //yield return null;
        while (trans != null)
        {
            ContentSizeFitter csf = trans.GetComponent<ContentSizeFitter>();
            if (csf)
            {
                // 加上这一句Rebuild
                 LayoutRebuilder.ForceRebuildLayoutImmediate(trans.GetComponent<RectTransform>());
                // 之前的做法
                //csf.enabled = false;
                //csf.enabled = true;
                //yield return null;
            }
            trans = trans.parent;
        }
        yield break;
    }

    GameObject go = GameObject.Find("UICanvas");
    Transform t = go.transform.Find("ScrollView/Viewport/Content");
    ContentSizeFitter[] coms = t.GetComponentsInChildren<ContentSizeFitter>();
    foreach (var item in coms)
    {
        LayoutRebuilder.ForceRebuildLayoutImmediate(trans.GetComponent<RectTransform>());
        //item.enabled = false;
        //item.enabled = true;
        //yield return null;
    }
}

以上是关于嵌套的ContentSizeFitter刷新的主要内容,如果未能解决你的问题,请参考以下文章

Unity ContentSizeFitter 手动刷新

unity, ContentSizeFitter立即生效

嵌套列表刷新

UGUI源码解析——ContentSizeFitter

UGUI源码解析——ContentSizeFitter

怎么自定义android 下拉刷新动画