Unity3D UGUI强制刷新Layout(布局)组件


 

UGUI的Layout布局组件确实节省了我们很多代码

如果不使用Layout组件

那么光在计算UI的布局上就要花费很大的功夫

特别是动态生成其组件的时候

 

当然,Layout组件在大多数时候是非常好用的

也有让人头疼的时候

比如,一个组件内需要展开或者折叠

image

image

这时,刷新不及时带来的问题就出现了

比如展开时产生UI覆盖

折叠时产生UI空隙

都是让人头大的问题

 

幸好Unity提供了一个强制刷新UI的方法

便将此问题完美解决了

LayoutRebuilder.ForceRebuildLayoutImmediate(recttransform);

参数为挂有Layout组件的recttransform

为了确保能够正确的刷新

建议放在一个协程中,待帧结束后检测一次,若没有刷新再执行一次

IEnumerator UpdateLayout(RectTransform rect)
    {
        LayoutRebuilder.ForceRebuildLayoutImmediate(rect);
        yield return new WaitForEndOfFrame();
        Vector3 vecScale = rect.localScale;
        float width = rect.rect.width;
        float height = rect.rect.height;
        while (rect.rect.width == 0)
        {
            Debug.Log(rect.rect.width);
            LayoutRebuilder.ForceRebuildLayoutImmediate(rect);
            yield return new WaitForEndOfFrame();
        }
    }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM