Unity UGUI --- Text组件预先获取文本的宽度和高度
2024-09-08 18:42:03
转自:https://blog.csdn.net/u010180140/article/details/104049958
原作者是用lua写的。明白用什么接口就好,什么语言不重要。
给定文本内容给Text
组建,预先知道Text
占用的宽高
利用TextGenerator,TextGenerationSettings可以提前知道Text
占用的宽高
function UIUtil.GetTextPreferredWidthAndHeight(cotent,fontSize)
local font = ResourcesManager.GetAsset("font")
local textGenerator = TextGenerator()
local setting = TextGenerationSettings()
setting.font = font
setting.fontSize = fontSize
setting.lineSpacing = 1
setting.scaleFactor = 1
setting.verticalOverflow = VerticalWrapMode.Overflow
setting.horizontalOverflow = HorizontalWrapMode.Overflow local width = textGenerator:GetPreferredWidth(content,setting)
local height = textGenerator:GetPreferredHeight(content,setting) return width,height
end
预先知道Text
占用的宽高的作用
(1)开始知道了Text
占用的宽,可以预先做好换行处理
(1)开始知道了Text
占用的宽,可以预先做好字符串的处理,例如在聊天系统里面的最精联系人一栏会有最近联系人的头像下会有最新的一条聊天信息,如果最新的那条信息超出了我们给定的宽度就要做截断出来,超出来的字符串用“…”替换
//预先获取限制宽度的字符串加上“…”结尾
function UIUtil.GetLimitWidthClippedStr(str,fontSize,limitWidth)
local charArr = StringUtil.StringToArray(str)
local len = #charArr
local ret = ""
local retList = {}
local line = 0
for i = 0,len do
local curStr = charArr[i]
local width = UIUtil.GetTextPreferredWidthAndHeight(curStr,fontSize)
line = line + width
retList[#retList + 1] = curStr
if line >= limitWidth then
retList[#retList + 1] = "..."
break
end
end
ret = table.concat(retList,"")
return ret
end
最新文章
- 提高SQL查询效率(SQL优化)
- CGAffineTransform方法汇总
- ecshop mobile 文件介绍
- android 瀑布流
- [转]linux下svn命令大全
- log4j 配置实例
- Cocos2d-x多场景切换生命周期
- C# 3.0 { get; set; } 默认值
- java中的静态初始化块
- Hibernate中遇见的问题
- [CQOI2009]dance跳舞
- Silverlight的认识
- caffe实现GAN
- clam简单使用
- SMB协议原理抓包分析
- poj2083 Fractal
- java中thread的start()和run()的区别
- elasticsearch-head的安装和使用
- 伸展树的实现——c++
- HDU 6198(2017 ACM/ICPC Asia Regional Shenyang Online)