38 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|
|
} |