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

Unity UGUI --- Text组件预先获取文本的宽度和高度的更多相关文章

  1. Unity UGUI——Text组件(Character)

    Character和Paragraph属性组

  2. Javascript获取图片原始宽度和高度的方法详解

    前言 网上关于利用Javascript获取图片原始宽度和高度的方法有很多,本文将再次给大家谈谈这个问题,或许会对一些人能有所帮助. 方法详解 页面中的img元素,想要获取它的原始尺寸,以宽度为例,可能 ...

  3. android之获取屏幕的宽度和高度

    获取屏幕的宽度和高度: 方法一: //获取屏幕的宽度 public static int getScreenWidth(Context context) { WindowManager manager ...

  4. 使用jQuery获取元素的宽度或高度的几种情况

    今天说说使用jQuery获取元素大小的遇到几种情况 使用jQuery获取元素的宽度或高度的有几种情况: 1.使用width(),它只能获取当前元素的内容的宽度: 2.使用innerWidth(),它只 ...

  5. Android 开发 Activity里获取View的宽度和高度 转载

    原文地址:https://blog.csdn.net/chenbaige/article/details/77991594 前言: 可能很多情况下,我们都会有在activity中获取view 的尺寸大 ...

  6. js获取上传图片大小,判断上传图片类型,获取图片真实宽度和高度

    html部分 <div class="form-group col-md-12"> <label class="col-md-2 text-right& ...

  7. 如何在onCreate方法中获取视图的宽度和高度

    你可以通过视图的getWidth()和getHeight()来获取视图的宽度和高度. 但是,可能会让你失望的是,如果你直接在onCreate方法内调用这两个函数,你会的到0. 为什么呢? 这是因为,当 ...

  8. php获取设备的宽度和高度

    php获取设备的宽度和高度 如果前台没有传输当前请求的宽度和高度,我们有时候需要用php借助javascript获取屏幕的宽和高,以控制现实的样式. 代码如下: <?php /* * 获取设备宽 ...

  9. Java 获取屏幕的宽度和高度

    获取屏幕的宽度和高度 1 import java.awt.Dimension; 2 import java.awt.Toolkit; 3 4 public class Main { 5 6 publi ...

  10. unity, UGUI Text outline

    UGUI Text的勾边效果是通过添加component实现的: Add Component->UI->Effects->Outline 参考:http://www.cnblogs. ...

随机推荐

  1. oracle 设置用户永不过期

    一.查看用户的proifle是哪个,一般是default SELECT username,PROFILE FROM dba_users; 二.查看指定概要文件(如default)的密码有效期 SELE ...

  2. DesignPatternPrinciple-设计模式原则

    1. 单一职责原则(Single Responsibility Principle)类T负责两个不同的职责:职责P1,职责P2. using System; using System.Collecti ...

  3. 洛谷P4726 【模板】多项式指数函数(多项式 exp)

    题目 https://www.luogu.com.cn/problem/P4726 思路 (略) 是个板题,但是包含了很多多项式的基础板子,适合用来练手. 据说递归版的好写(好抄),但是我猜测和fft ...

  4. Day 24 24.2:逆向分析2 - 完美世界案例

    完美世界逆向分析 url:https://passport.wanmei.com/login?location=L3NhZmUv 定位到正确的断点位置 进行js改写操作 断点代码的关键字:setPub ...

  5. 任务队列神器:Celery 入门到进阶指南

    任务队列神器:Celery 入门到进阶指南 发布于2021-03-24 16:24:53阅读 1.9K0   1.什么是celery celery是一个简单,灵活.可靠的分布式任务执行框架,可以支持大 ...

  6. VMware-安装rpm包出现警告:tigervnc-1.1.0-24.el6.x86_64.

    警告:tigervnc-1.1.0-24.el6.x86_64. 解决方法:rpm -ivh tigervnc-1.1.0-24.el6.x86_64.rpm --force --nodeps --n ...

  7. java正则匹配字符串最外层{}里的内容,包含{}

    String s = "start {sffff''{adfaw3ea}wfewrfwef----}";String regex = "(?<=\\{).*(?=\ ...

  8. Neo4j安装及简单使用【转】

    转载防丢失. 一.Neo4j和图数据库简介 neo4j是基于Java语言编写图形数据库.图是一组节点和连接这些节点的关系.图形数据库也被称为图形数据库管理系统或GDBMS. Neo4j的是一种流行的图 ...

  9. kubectl查询日志命令

    防水堡 bug日志定位命令: docker logs --tail 100 xxx:xxx 是容器的id 或者名称kubectl logs-f --tail 100 xxx:xxx 是pod 的id, ...

  10. SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory 解决办法

    [oracle@localhost oracle]$ ./sqlplus Error 6 initializing SQL*Plus Message file sp1<lang>.msb ...