Files
aibis-dream/Assets/Plugins/LoopScrollRect/Runtime/LoopScrollSizeUtils.cs
T
2025-09-16 17:13:21 +08:00

38 lines
1.5 KiB
C#

using UnityEngine;
using UnityEngine.UI;
namespace AibisDream.UI
{
public static class LoopScrollSizeUtils
{
public static float GetPreferredHeight(RectTransform item)
{
ILayoutElement minLayoutElement;
ILayoutElement preferredLayoutElement;
var minHeight = LayoutUtility.GetLayoutProperty(item, e => e.minHeight, 0, out minLayoutElement);
var preferredHeight = LayoutUtility.GetLayoutProperty(item, e => e.preferredHeight, 0, out preferredLayoutElement);
var result = Mathf.Max(minHeight, preferredHeight);
if (preferredLayoutElement == null && minLayoutElement == null)
{
result = item.rect.height;
}
Debug.Assert(result > 0);
return result;
}
public static float GetPreferredWidth(RectTransform item)
{
ILayoutElement minLayoutElement;
ILayoutElement preferredLayoutElement;
var minWidth = LayoutUtility.GetLayoutProperty(item, e => e.minWidth, 0, out minLayoutElement);
var preferredWidth = LayoutUtility.GetLayoutProperty(item, e => e.preferredWidth, 0, out preferredLayoutElement);
var result = Mathf.Max(minWidth, preferredWidth);
if (preferredLayoutElement == null && minLayoutElement == null)
{
result = item.rect.width;
}
Debug.Assert(result > 0);
return result;
}
}
}