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