|
@@ -0,0 +1,83 @@
|
|
|
+using System.Collections.Generic;
|
|
|
+using UnityEngine;
|
|
|
+
|
|
|
+public static class RectTransformExtension
|
|
|
+{
|
|
|
+ private static Dictionary<RectTransform, Vector2> originSizeDeltaDict = new Dictionary<RectTransform, Vector2>();
|
|
|
+
|
|
|
+ private static void AddToOriginSizeDeltaDict(RectTransform rectTrans)
|
|
|
+ {
|
|
|
+ if (!originSizeDeltaDict.ContainsKey(rectTrans))
|
|
|
+ {
|
|
|
+ originSizeDeltaDict.Add(rectTrans, rectTrans.sizeDelta);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void RecoverSizeDelta(this RectTransform rectTrans)
|
|
|
+ {
|
|
|
+ if (originSizeDeltaDict.ContainsKey(rectTrans))
|
|
|
+ {
|
|
|
+ rectTrans.sizeDelta = originSizeDeltaDict[rectTrans];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void SetSizeDeltaXByRatio(this RectTransform rectTrans, float xRatio)
|
|
|
+ {
|
|
|
+ AddToOriginSizeDeltaDict(rectTrans);
|
|
|
+ RecoverSizeDelta(rectTrans);
|
|
|
+ Vector2 newSizeDelta = new Vector2();
|
|
|
+ newSizeDelta.x = rectTrans.sizeDelta.x * xRatio;
|
|
|
+ newSizeDelta.y = rectTrans.sizeDelta.y;
|
|
|
+ rectTrans.sizeDelta = newSizeDelta;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void SetSizeDeltaYByRatio(this RectTransform rectTrans, float yRatio)
|
|
|
+ {
|
|
|
+ AddToOriginSizeDeltaDict(rectTrans);
|
|
|
+ RecoverSizeDelta(rectTrans);
|
|
|
+ Vector2 newSizeDelta = new Vector2();
|
|
|
+ newSizeDelta.x = rectTrans.sizeDelta.x;
|
|
|
+ newSizeDelta.y = rectTrans.sizeDelta.y * yRatio;
|
|
|
+ rectTrans.sizeDelta = newSizeDelta;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void SetSizeDeltaByRatio(this RectTransform rectTrans, float xRatio, float yRatio)
|
|
|
+ {
|
|
|
+ AddToOriginSizeDeltaDict(rectTrans);
|
|
|
+ RecoverSizeDelta(rectTrans);
|
|
|
+ Vector2 newSizeDelta = new Vector2();
|
|
|
+ newSizeDelta.x = rectTrans.sizeDelta.x*xRatio;
|
|
|
+ newSizeDelta.y = rectTrans.sizeDelta.y*yRatio;
|
|
|
+ rectTrans.sizeDelta = newSizeDelta;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void SetSizeDeltaX(this RectTransform rectTrans, float xSize)
|
|
|
+ {
|
|
|
+ AddToOriginSizeDeltaDict(rectTrans);
|
|
|
+ RecoverSizeDelta(rectTrans);
|
|
|
+ Vector2 newSizeDelta = new Vector2();
|
|
|
+ newSizeDelta.x = xSize;
|
|
|
+ newSizeDelta.y = rectTrans.sizeDelta.y;
|
|
|
+ rectTrans.sizeDelta = newSizeDelta;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void SetSizeDeltaY(this RectTransform rectTrans, float ySize)
|
|
|
+ {
|
|
|
+ AddToOriginSizeDeltaDict(rectTrans);
|
|
|
+ RecoverSizeDelta(rectTrans);
|
|
|
+ Vector2 newSizeDelta = new Vector2();
|
|
|
+ newSizeDelta.x = rectTrans.sizeDelta.x;
|
|
|
+ newSizeDelta.y = ySize;
|
|
|
+ rectTrans.sizeDelta = newSizeDelta;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void SetSizeDelta(this RectTransform rectTrans, float xSize, float ySize)
|
|
|
+ {
|
|
|
+ AddToOriginSizeDeltaDict(rectTrans);
|
|
|
+ RecoverSizeDelta(rectTrans);
|
|
|
+ Vector2 newSizeDelta = new Vector2();
|
|
|
+ newSizeDelta.x = xSize;
|
|
|
+ newSizeDelta.y = ySize;
|
|
|
+ rectTrans.sizeDelta = newSizeDelta;
|
|
|
+ }
|
|
|
+}
|