计算文本在居中对齐的位置开始

Calculate where text starts on centre alignment

我有一个 UILabel,我想在文本开始的地方添加一个 UIView

问题是标签中的文本与中心对齐,所以我不知道如何确定实际文本的开始位置以及放置此文本的位置 UIView

知道如何计算这个东西吗?

谢谢!

您可以使用 UIView 容器来包裹 UILabel 和您的新 UIView。然后你可以让 UILabel 根据它的内容决定宽度并将它设置在容器的中心。完成此工作后,您只需阅读 UILabel x 即可了解它从哪里开始。

所以 UILabel 将有 topbottom 的约束,你想要的高度和中心到水平,而小的 UIViewtopbottomheightwidthleading 等于 UILabel

发件人:How to find the position(x,y) of a letter in UILabel

NSRange range = [@"Good,Morning" rangeOfString:@","];
NSString *prefix = [@"Good,Morning" substringToIndex:range.location];
CGSize size = [prefix sizeWithFont:[UIFont systemFontOfSize:18]];
CGPoint p = CGPointMake(size.width, 0);
NSLog(@"p.x: %f",p.x);
NSLog(@"p.y: %f",p.y);

您可以根据自己的目的修改它

您可以使用 "nsattributedstring"

获取文字大小
let label = UILabel(frame: CGRectMake(0, 0, 100, 100))
label.text = "dshfk,j"
label.textAlignment = .Center
label.textColor = UIColor.redColor()

let string = label.attributedText
let width = string!.size().width
let height = string!.size().height

let view = UIView(frame: CGRectMake(width, height, width, height))
view.backgroundColor = UIColor.blackColor()

然后你可以用这个找到rect..

示例视图

您也可以使用

yourLabel.sizeToFit()

根据需要自动调整标签大小 space。然后读出标签的框架:

yourLabel.frame.size (width or height)