【问题标题】:Calculate where text starts on centre alignment计算文本从中心对齐开始的位置
【发布时间】:2016-12-22 16:04:49
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

  • 你真的需要计算吗?为什么不为此使用自动布局 - 中心标签到父视图,并为您的 UIView 设置相同。标签的大小应与您的文本完全一致。
  • @derdida 视图是 1px 宽和 5px 高,我希望它正好是文本开始的位置。这就是为什么我需要计算它
  • 为什么不设置在文本视图的左端?否则你可以在你的标签上使用“sizeToFit()”,并获得尺寸 (label.frame.size.width)
  • @derdida 很好,谢谢!
  • 它是这样工作的吗?

标签: ios objective-c swift cocoa-touch uilabel


【解决方案1】:

您可以使用UIView 容器来包装UILabel 和您的新UIView。然后您可以让UILabel 根据其内容决定宽度并将其设置在容器的中心。完成这项工作后,您只需阅读UILabel x 即可了解它的起点。

所以UILabel 将受到topbottom、您想要的高度和水平中心的限制,而小UIViewtopbottomheight、@ 987654335@ 和 leading 等于 UILabel

【讨论】:

  • 我不太明白,你能用一个简单的例子来编辑你的答案以帮助我更好地理解吗?
  • 这是一个描述如何用自动布局解决这个问题。
【解决方案2】:

发件人: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);

您可以根据自己的目的对其进行修改

【讨论】:

    【解决方案3】:

    您可以使用“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 ..

    示例视图

    【讨论】:

      【解决方案4】:

      你也可以使用

      yourLabel.sizeToFit()
      

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

      yourLabel.frame.size (width or height)
      

      【讨论】:

        猜你喜欢
        • 2021-07-07
        • 1970-01-01
        • 2023-01-18
        • 2021-08-11
        • 2021-10-13
        • 2016-12-06
        • 2021-05-27
        • 2021-08-20
        • 1970-01-01
        相关资源
        最近更新 更多