当前位置: 首页 > news >正文

Unity TMP_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);
}

 效果

相关文章:

  • Spring生命周期都有哪些阶段
  • k8s命名空间和资源配额
  • redis 与 DB 的一致性 7 种策略
  • 软考教材重点内容 信息安全工程师 第18章 网络安全测评技术与标准
  • 【C语言】高内聚低耦合:结构体、联合体、数组、字符串、枚举和指针的综合实践
  • 显式 GC 的使用:留与去,如何选择?
  • [RN]React Native知识框架图详解
  • GPU架构分类
  • win11远程桌面连接报错(出现身份验证错误。要求的函数不受支持。可能是CredSSP 加密数据库修正)的解决办法整理
  • 左值引用与指针的区别
  • rpc学习
  • 网络安全系统分为几级_网络安全系统的分级与软考要点解析
  • 解决样式隔离的方法
  • Live2d官方项目运行
  • c++头文件和命名空间
  • 在线量化算法(QAT) --学习记录1
  • Android 常见View的防抖
  • NO.19十六届蓝桥杯模拟赛第三期上
  • 【Wireshark 02】抓包过滤方法
  • Orfeo Toolbox (OTB):开源的遥感数据处理工具箱/QGIS插件
  • 购物网站开发参考文献/搜索引擎优化的方法和技巧
  • 泰州seo顾问服务/百度seo推广软件
  • 基于web的旅游网站建设/网站宣传费用
  • 网站成品超市/百度关键词优化企业
  • 做室内设计人喜欢的网站/最新域名8xgmvxyz
  • 长沙环路建设开发有限公司网站/北京网络营销咨询公司