·记录一下工作里常碰到的一些简单问题:
需求是一个购买按钮上同时展示原价和现价:

1.原价现价文本格式差别
2.原价切需要加打折红线,不方便用富文本一个文本处理。
3.需要对两条文本适配父节点的宽度,不能超出按钮
以下是实现代码:
- function CenterTwoTexts(text1, text2)
- text1.fontSize = 36
- text2.fontSize = 42
- -- 获取两个Text控件的RectTransform
- local rectTransform1 = text1.transform:GetComponent(typeof(RectTransform))
- local rectTransform2 = text2.transform:GetComponent(typeof(RectTransform))
- -- 获取父节点的RectTransform
- local parentRectTransform = rectTransform1.parent:GetComponent(typeof(RectTransform))
- -- 设置Text perfect size
- rectTransform1.sizeDelta = Vector2(text1.preferredWidth, text1.preferredHeight)
- rectTransform2.sizeDelta = Vector2(text2.preferredWidth, text2.preferredHeight)
- -- 计算两个Text控件的总宽度
- local totalWidth = rectTransform1.sizeDelta.x + rectTransform2.sizeDelta.x
- local parentWidth = parentRectTransform.sizeDelta.x - 30
- -- 计算两个Text控件的总宽度与父节点的宽度之差
- local scale = 1
- if parentWidth < totalWidth then
- scale = parentWidth / totalWidth
- rectTransform1.localScale = Vector3(scale, scale, scale)
- rectTransform2.localScale = Vector3(scale, scale, scale)
- end
- logYellow("scale = " .. scale)
- logCyan(rectTransform1.sizeDelta.x, rectTransform2.sizeDelta.x)--, parentRectTransform.sizeDelta.x, totalWidth, scale
- -- 计算每个Text控件应该偏移的距离,以使它们居中
- local offset = rectTransform2.sizeDelta.x / 2 - rectTransform1.sizeDelta.x / 2
- -- 设置第一个Text控件的位置
- rectTransform1.anchoredPosition = Vector2(-offset - 3, rectTransform1.anchoredPosition.y)
- -- 设置第二个Text控件的位置
- rectTransform2.anchoredPosition = Vector2(-offset + 3, rectTransform2.anchoredPosition.y)
- end
复制代码 思路是将左边文本锚点设置到最右(1,0.5),右边锚点设置到最左(0,0.5)此时只需要对齐文本的坐标即可。先按两条文本长度算出来整体偏移,然后根据父节点的宽度做缩放。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |