59 lines
2.2 KiB
C#
Raw Normal View History

2025-09-08 14:51:28 +08:00
using UnityEngine;
using UnityEngine.UI;
using static UnityEngine.Rendering.DebugUI;
[RequireComponent(typeof(InputField))]
public class AutoExpandInputField : MonoBehaviour
{
private InputField inputField;
private Text inputText;
//private ContentSizeFitter contentSizeFitter;
//private LayoutElement layoutElement;
private RectTransform rectTransform;
private void Awake()
{
inputField = GetComponent<InputField>();
inputText = inputField.textComponent;
//contentSizeFitter = GetComponent<ContentSizeFitter>();
//layoutElement = GetComponent<LayoutElement>();
rectTransform = GetComponent<RectTransform>();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ仯<DDB1>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָı<D6B8>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>
inputField.onValueChanged.AddListener(OnValueChanged);
}
//private void OnEnable()
//{
// layoutElement.preferredHeight = layoutElement.minHeight;
// rectTransform.anchoredPosition = new Vector2 (-158.9837f, -67.5f);
//}
//private void Update()
//{
// Canvas.ForceUpdateCanvases();
// // <20><>ȡ<EFBFBD>ı<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>Ҫ<EFBFBD>ĸ߶<C4B8>
// float requiredHeight = inputText.flexibleHeight;
// // <20><><EFBFBD><EFBFBD>LayoutElement<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>߶<EFBFBD><DFB6><EFBFBD><EFBFBD>ƣ<EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD>߶<EFBFBD>
// if (layoutElement != null)
// {
// // ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ߶Ȳ<DFB6>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>С<EFBFBD>߶<EFBFBD>
// requiredHeight = Mathf.Max(requiredHeight, layoutElement.minHeight);
// layoutElement.flexibleHeight = requiredHeight;
// }
// else
// {
// // û<><C3BB>LayoutElementʱ<74><CAB1>ֱ<EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD>ContentSizeFitter<65><72><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶ȣ<DFB6>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>һ<EFBFBD><EFBFBD><E3B6BC><EFBFBD><EFBFBD>LayoutElement<6E><74><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>
// rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, requiredHeight);
// }
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><E3A3AC>ContentSizeFitter<65><72><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>ʾ
// if (contentSizeFitter != null)
// {
// contentSizeFitter.SetLayoutVertical();
// }
//}
void OnValueChanged(string text)
{
// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ݵĸ߶<C4B8>
int preferredHeight = Mathf.CeilToInt(inputField.textComponent.preferredHeight) + 20; // 20<32><30><EFBFBD><EFBFBD><EFBFBD>±߾<C2B1>
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, preferredHeight);
}
}