主页 > 电脑硬件  > 

UnityTMP_InputField多行输入时的高度适应

UnityTMP_InputField多行输入时的高度适应
实现

设定输入框的行类型为多行新建行。

inputField.lineType = TMP_InputField.LineType.MultiLineNewline;

 进行输入时调整输入框高度。

height = inputField.textComponent.preferredHeight + offset; if (height <= minHeight) { rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, minHeight); } else { rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height); }

*offset 为Text Area 与 InputField (TMP) 的高度差,默认高度差通常为13。

更新Text Component 和Caret 位置。

inputField.textComponent.rectTransform.anchoredPosition = Vector2.zero; if (inputField.GetComponent<TMP_SelectionCaret>()) { inputField.GetComponent<TMP_SelectionCaret>().rectTransform.anchoredPosition = Vector2.zero; }

每帧结束强制带有LayoutGroup 组件的父面板进行内部数据重新计算。

LayoutGroup[] layouts = GetComponentsInParent<LayoutGroup>(); for (int i = 0; i < layouts.Length; i++) { LayoutGroup layout = layouts[i]; RectTransform rect = layout.transform as RectTransform; rect.ForceUpdateRectTransforms(); LayoutRebuilder.ForceRebuildLayoutImmediate(rect); }  效果

标签:

UnityTMP_InputField多行输入时的高度适应由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“UnityTMP_InputField多行输入时的高度适应