Unity支持滚动输入框ScrollInputField

前言

开发中遇到了需要支持滚动适配的输入框,输入框大小固定,根据输入内容实现可滑动显示,并能够自动显示隐藏滑动条

解决方法

InputField内嵌ScrollView

Content节点:水平自适应组件、垂直布局组件

Text节点:

  1. 挂在Content下,用于ScrollView感知高度

  1. 同时也是指定给InputField的Text

  1. 挂载LayoutElement,动态计算文本高度,设置preferredHeight,以此设定文本的实际高度

FormatText节点

  1. 挂在Content Size Fitter 打开垂直自适应

  1. 每次InputField.Text内容改变时,同步到FormatText,然后FormatText通过自适应高度,代码中获取preferredHeight,然后将此preferredHeight赋值给InputField.Text.preferredHeight,以此得到文本的实际高度

    private void FormatInputHeight(string textValue)
    {
        m_FormatText.text = value;
        m_FormatText.GetComponent<ContentSizeFitter>().SetLayoutVertical();//立即生效
        var height = m_FormatText.preferredHeight;
        m_InputField_Text.GetComponent<LayoutElement>().preferredHeight = height;
    }

关于只有当内容范围触发滑动条的时候才能滑动:

每帧监听:

 m_InputField_Scroll.vertical = m_InputField_Scroll.verticalScrollbar.gameObject.activeSelf;
if (!m_MainIPF_Scroll.vertical)
{
    m_MainIPF_Scroll.verticalNormalizedPosition = 1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值