嵌套的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刷新的主要内容,如果未能解决你的问题,请参考以下文章