UILabel居中文本CGRect?

Posted

技术标签:

【中文标题】UILabel居中文本CGRect?【英文标题】:UILabel centered text CGRect? 【发布时间】:2017-03-30 13:47:57 【问题描述】:

我有一个居中文本的 UILabel。单行,未归属。我想获取标签中实际文本的 CGRect(它跨越了 ios 设备的整个宽度)。部分文本在文本中是动态的,因此标签中文本的宽度会不时变化。所以我想获取文本的位置,以便可以在第一个字符旁边放置图像。

我过去做过这个,但不记得我做了什么。

【问题讨论】:

为什么不用 NSAttributedString 来渲染图片,用 NSParagraphStyle 加一个等于图片宽度的headindent? 【参考方案1】:

我最终使用了 UILabel.textRect。它非常适合我。

let myRect:CGRect = _topBanner.textRect(forBounds: _topBanner.bounds, limitedToNumberOfLines: 1)
_icon.frame.origin.x = myRect.origin.x - _icon.frame.size.width + 50
_icon.frame.origin.y = _topBanner.frame.origin.y + 8

【讨论】:

【参考方案2】:

尝试创建一个临时的UILabel 只是为了获取文本宽度

let fullWidthLabel: UILabel = ...
let tmpLabel = UILabel()
tmpLabel.text = fullWidthLabel.text
tmpLabel.font = fullWidthLabel.font
tmpLabel.sizeToFit()
let textWidth = tmpLabel.frame.width

使用textWidth 解决您原来的问题。

【讨论】:

以上是关于UILabel居中文本CGRect?的主要内容,如果未能解决你的问题,请参考以下文章

如何在框架中水平(向上/向下)居中 UILabel 文本?

在 Core Graphic 中绘制的线条之间创建一个居中旋转的 UILabel

如何将 UILabel 文本顶部和底部空间居中

根据实际可见字母高度在 UILabel 中垂直居中文本

调整文本大小以适应宽度(1行标签)后,如何在 UILabel 中垂直和水平居中?

iOS - UILabel