当前位置: 首页 > 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);
}

 效果

http://www.dtcms.com/a/48952.html

相关文章:

  • 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插件
  • DeepSeek 助力 Vue3 开发:打造丝滑的弹性布局(Flexbox)
  • c++ 迭代器分类及详细讲解
  • 【测试开发面试题】每日 3 题(三)
  • Trae:国内首款AI原生IDE,编程效率大提升
  • doris:Paimon Catalog
  • 智能差旅管理新范式:MyAgent如何重塑企业差旅全流程自动化
  • 【uniapp】离线打包uniapp为apk详细步骤
  • 腾讯三面:写文件时进程宕机,数据会丢失吗?
  • 基于springboot+vue3图书借阅管理系统
  • MySQL笔记---Ubuntu环境下从零开始的MySQL