【问题标题】:Align UILabel text to a specific character将 UILabel 文本与特定字符对齐
【发布时间】:2017-02-19 05:11:03
【问题描述】:

我正在使用 UILber 以非常大的字体(240 号)显示第二个倒计时。显示的字符串格式为“xxx.xx”,其中 x 为字符 0-9。我想将文本与标签中显示的字符串中的点字符 (.) 对齐。我在标签中使用 textAlignment 作为 .Center,但某些字符串的实际显示长度不同,导致更新字符串时点字符会左右移动。 F.x. “1”的 textContainer 小于“8”。

这样的人物排列可以做吗?

【问题讨论】:

  • 这不能回答你的问题,但这里有一个替代方案。使用两个标签,一个用于三个整数数字,一个用于两个小数数字。在两个标签之间放置一个点的图像(或者您想要制作的点)。然后你可以垂直对齐点,在点的左侧右对齐整数标签,在点的右侧左对齐分数标签。

标签: ios swift uilabel text-alignment


【解决方案1】:

有趣的问题伙伴:

请在下面找到解决方案:

基本上我在这里所做的是:

  1. 使用 Storyboard,我在一个水平堆栈视图中拍摄了 3 个垂直堆栈视图。
  2. 只需将第二个垂直堆栈视图与静态宽度居中对齐,其他堆栈视图将相应调整。
  3. 其余的你可以按照所附的屏幕截图进行限制。

标签不需要约束,只需根据需要对齐文本即可。

干杯!

【讨论】:

    【解决方案2】:
    1. 把三个标签贴在一起..
    2. label1|labelDot|label2 将匹配您的 XX.XXX
    3. 右对齐 label1,修复 labelDot,左对齐 label2

    【讨论】:

      【解决方案3】:
      let attributedStringOne = NSAttributedString.init(string: "XXX", attributes: [NSAttributedStringKey.baselineOffset: 0])
      let attributedStringTwo = NSAttributedString.init(string: ".", attributes: [NSAttributedStringKey.baselineOffset: label.frame.height / 4])
      let attributedText = NSMutableAttributedString.init()
      attributedText.append(attributedStringOne)
      attributedText.append(attributedStringTwo)
      
      label.attributedText = attributedText
      

      baselineOffsetNSNumber 类型。所以你可以从基线设置你想要多少。

      【讨论】:

        猜你喜欢
        • 2023-04-11
        • 1970-01-01
        • 2013-06-21
        • 2022-01-05
        • 1970-01-01
        • 2011-08-09
        • 2012-06-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多