分享

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

 勤奋不止 2019-03-19

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

如果不使用Layout组件

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

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

 

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

也有让人头疼的时候

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

image

image

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

比如展开时产生UI覆盖

折叠时产生UI空隙

都是让人头大的问题

 

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

便将此问题完美解决了

LayoutRebuilder.ForceRebuildLayoutImmediate(recttransform);

参数为挂有Layout组件的recttransform

为了确保能够正确的刷新

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

  1. IEnumerator UpdateLayout(RectTransform rect)
  2. {
  3. LayoutRebuilder.ForceRebuildLayoutImmediate(rect);
  4. yield return new WaitForEndOfFrame();
  5. Vector3 vecScale = rect.localScale;
  6. float width = rect.rect.width;
  7. float height = rect.rect.height;
  8. while (rect.rect.width == 0)
  9. {
  10. Debug.Log(rect.rect.width);
  11. LayoutRebuilder.ForceRebuildLayoutImmediate(rect);
  12. yield return new WaitForEndOfFrame();
  13. }
  14. }

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多