转自: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

最新文章

  1. 提高SQL查询效率(SQL优化)
  2. CGAffineTransform方法汇总
  3. ecshop mobile 文件介绍
  4. android 瀑布流
  5. [转]linux下svn命令大全
  6. log4j 配置实例
  7. Cocos2d-x多场景切换生命周期
  8. C# 3.0 { get; set; } 默认值
  9. java中的静态初始化块
  10. Hibernate中遇见的问题
  11. [CQOI2009]dance跳舞
  12. Silverlight的认识
  13. caffe实现GAN
  14. clam简单使用
  15. SMB协议原理抓包分析
  16. poj2083 Fractal
  17. java中thread的start()和run()的区别
  18. elasticsearch-head的安装和使用
  19. 伸展树的实现——c++
  20. HDU 6198(2017 ACM/ICPC Asia Regional Shenyang Online)

热门文章

  1. 问题集锦 ~ MySQL
  2. input type='number' 去除小箭头 clear arrow
  3. iOS Charles抓包
  4. 【面试必备】 【ES6】学Vue前必须掌握的内容(上)
  5. Cisco——ASA和winserver2016配置l2tp over ipsec连接
  6. docker私有镜像仓库搭建(简)
  7. vue去除富文本的标签和样式
  8. Java设计模式——装饰器模式(Decorator)
  9. 【C++】fstream文件操作
  10. 教你如何自己搭环境部署华为FusionCompute虚拟化系统