From 498c0aa885138063c8537bc6ad4e078857f6f0ee Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 29 十二月 2025 19:09:22 +0800
Subject: [PATCH] 0312 基础界面增加 嵌套ContentSizeFitter需要强制刷新排版

---
 Main/System/UIBase/UIBase.cs |    6 ++++++
 Main/Utility/UIUtility.cs    |   23 +++++++++++++++++++++++
 2 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/Main/System/UIBase/UIBase.cs b/Main/System/UIBase/UIBase.cs
index 1801cb0..2d8d7b7 100644
--- a/Main/System/UIBase/UIBase.cs
+++ b/Main/System/UIBase/UIBase.cs
@@ -79,6 +79,8 @@
     [Header("鐐瑰嚮绌虹櫧鍏抽棴")]
     [SerializeField] public bool clickEmptySpaceClose = false;
 
+    [Header("宓屽ContentSizeFitter闇�瑕佸己鍒跺埛鏂版帓鐗�")]
+    public Transform layout;
     public GameObject screenMask = null;
 
     private Button btnClickEmptyClose;
@@ -301,6 +303,10 @@
         try
         {
             OnPreOpen();
+            if (layout != null)
+            {
+                UIUtility.ForceRefreshLayout(layout).Forget();
+            }
         }
         catch (Exception e)
         {
diff --git a/Main/Utility/UIUtility.cs b/Main/Utility/UIUtility.cs
index 1ae82d0..5c24afd 100644
--- a/Main/Utility/UIUtility.cs
+++ b/Main/Utility/UIUtility.cs
@@ -3,6 +3,7 @@
 using UnityEngine;
 using UnityEngine.UI;
 using UnityEngine.EventSystems;
+using Cysharp.Threading.Tasks;
 
 
 
@@ -344,4 +345,26 @@
 
         return string.Join("/", names);
     }
+
+        /// <summary>
+    /// 寮哄埗鍒锋柊Layout锛岃В鍐冲祵濂桳ayout鍜孋ontentSizeFitter鐨勯噸鍙犻棶棰�
+    /// </summary>
+    public static async UniTask ForceRefreshLayout(Transform _layout)
+    {
+        await UniTask.DelayFrame(2);
+        // 鍒锋柊鎵�鏈塋ayout缁勪欢
+        var layouts = _layout.GetComponentsInChildren<LayoutGroup>(true);
+        foreach (var layout in layouts)
+        {
+            LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent<RectTransform>());
+        }
+        await UniTask.DelayFrame(2);
+        // 鍒锋柊鎵�鏈塋ayout缁勪欢
+        foreach (var layout in layouts)
+        {
+            LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent<RectTransform>());
+        }
+
+    }
+
 }

--
Gitblit v1.8.0