hch
昨天 907d3affe378322bfb43f9128a1da3853b82a5cb
0312 强制刷新排版
1个文件已修改
25 ■■■■■ 已修改文件
Main/System/KnapSack/Logic/CommonGetItemWin.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/KnapSack/Logic/CommonGetItemWin.cs
@@ -1,11 +1,13 @@
using System.Collections.Generic;
using System.Linq;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
//用于显示获得物品的窗口
public class CommonGetItemWin : UIBase
{
    [SerializeField] Transform bg;
    [SerializeField] ScrollerController scroller;
    [SerializeField] Text tipText;
@@ -24,6 +26,7 @@
        {
            tipText.text = Language.Get(ItemLogicUtility.Instance.sourceTip);
        }
        ForceRefreshLayout().Forget();
    }
@@ -94,4 +97,26 @@
        var _cell = cell as CommonGetItemCell;
        _cell?.Display(cell.index, showItems);
    }
        /// <summary>
    /// 强制刷新Layout,解决嵌套Layout和ContentSizeFitter的重叠问题
    /// </summary>
    async UniTask ForceRefreshLayout()
    {
        await UniTask.DelayFrame(2);
        // 刷新所有Layout组件
        var layouts = bg.GetComponentsInChildren<LayoutGroup>(true);
        foreach (var layout in layouts)
        {
            LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent<RectTransform>());
        }
        await UniTask.DelayFrame(2);
        // 刷新所有Layout组件
        foreach (var layout in layouts)
        {
            LayoutRebuilder.ForceRebuildLayoutImmediate(layout.GetComponent<RectTransform>());
        }
    }
}