Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将UILabel文本与特定字符对齐_Ios_Swift_Uilabel_Text Alignment - Fatal编程技术网

Ios 将UILabel文本与特定字符对齐

Ios 将UILabel文本与特定字符对齐,ios,swift,uilabel,text-alignment,Ios,Swift,Uilabel,Text Alignment,我使用的是一个UILaber,它以非常大的字体(240号)显示第二次倒计时。显示的字符串格式为“xxx.xx”,x为字符0-9。我想将文本与标签中显示的字符串中的点号(.)对齐。我在标签中使用textAlignment作为.Center,但有些字符串的实际显示长度不同,这导致在更新字符串时点字符左右移动。F.x.“1”的文本容器小于“8” 有可能进行这种角色联合吗 有趣的问题伙伴: 请在下面找到解决方案: 基本上我在这里做的是: 使用故事板,我在水平堆栈视图中获得了3个垂直堆栈视图 只需将第二

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

有可能进行这种角色联合吗


有趣的问题伙伴:

请在下面找到解决方案:

基本上我在这里做的是:

  • 使用故事板,我在水平堆栈视图中获得了3个垂直堆栈视图
  • 只需将第二个垂直堆栈视图与静态宽度居中对齐,其他堆栈视图将相应调整
  • 您可以按照附加的屏幕截图进行约束
  • 标签不需要约束,只需根据需要对齐文本即可

    干杯

  • 把三个标签贴在一起
  • label1 | labelDot | label2将与您的XX.XXX相匹配
  • 右对齐label1,固定labelDot,左对齐label2

  • baselineOffsetNSNumber类型。因此,您可以从基线设置您想要的值。

    这并不能回答您的问题,但这里有一个替代方案。使用两个标签,一个用于三个整数数字,一个用于两个分数数字。在两个标签之间放置一个点的图像(或按您希望的方式制作点)。然后可以垂直对齐点,右对齐点左侧的整数标签,左对齐点右侧的分数标签。
    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