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?的主要内容,如果未能解决你的问题,请参考以下文章
在 Core Graphic 中绘制的线条之间创建一个居中旋转的 UILabel