【UGUI】UGUI 文字背景根据文字大小自适应

23 篇文章 0 订阅

在使用UGUI 的时候经常会做文字的适配,就是当文字字数超出文本以后让文本随字体的数量增加而加长或加宽,当有背景去做适配的时候如何去做呢?


道理是一样的 在text + contentSizeFitter 组件

然后根据文本最后的高度去对背景进行赋值,理论上 这很简单。

text.preferredHeight

但是 在项目中遇到了一个问题,就是当理想高度不准确的时候,怎么做?

后来的思路是 用  理想宽度去除以 /  字体的总长度 = 每个字体的宽度

用文本的固定宽度去除以 / 每个字体的宽度 = 得出一行有几个字

字体的总长度 除以 / 一行有几个字 = 得出总共有几行

大概这个思路就可以得出想要的高度

TextGenerator m_TextGenerator = stepText.cachedTextGeneratorForLayout;
            TextGenerationSettings m_TextGenerationSettings = stepText.GetGenerationSettings(Vector2.zero);
            m_TextGenerationSettings = stepText.GetGenerationSettings(new Vector2(stepText.rectTransform.rect.x, 0.0f));
            float fHeight = m_TextGenerator.GetPreferredHeight(block.StepList[i].Desc, m_TextGenerationSettings);



            var oneFontWidth = stepText.preferredWidth / block.StepList[i].Desc.Length;
            //rows 一行多少个
            var rowNumber = rectObj.sizeDelta.x / oneFontWidth;
            //一共几行
            var rows = block.StepList[i].Desc.Length / (rowNumber);
            var remainder = block.StepList[i].Desc.Length % (rowNumber);
            if (remainder > 0)
            {
                rows += 1;
            }
            //想要的高度 = 一共几行* 一行的高度;
            rectObj.sizeDelta = new Vector2(rectObj.sizeDelta.x, (rows * fHeight));


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unity_阿黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值