Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.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';s文本_Ios_Swift - Fatal编程技术网

Ios 如何将视图左下对齐到多行UILabel';s文本

Ios 如何将视图左下对齐到多行UILabel';s文本,ios,swift,Ios,Swift,我有一个多行UILabel,另一个标签应该在第一个结束后立即开始 下面是一行文本的外观: 如您所见,带有“39秒”的第二个标签与消息标签的左侧和基线对齐 这是一个带有截断尾部的多行标签: 这也可以,但是当消息标签需要两行,但第二行比第一行短时,就会出现问题。这是一张我遇到问题的照片: 因此,我需要弄清楚如何将第二个标签(上面有时间的标签)对齐到文本在第一个标签上结束的右侧。是否有任何已知的方法可以做到这一点,或者是否有一种我不知道的不同解决方案?我将使用字符串连接并使用相同的标签并组合两个

我有一个多行UILabel,另一个标签应该在第一个结束后立即开始

下面是一行文本的外观:

如您所见,带有“39秒”的第二个标签与消息标签的左侧和基线对齐

这是一个带有截断尾部的多行标签:

这也可以,但是当消息标签需要两行,但第二行比第一行短时,就会出现问题。这是一张我遇到问题的照片:


因此,我需要弄清楚如何将第二个标签(上面有时间的标签)对齐到文本在第一个标签上结束的右侧。是否有任何已知的方法可以做到这一点,或者是否有一种我不知道的不同解决方案?

我将使用字符串连接并使用相同的标签并组合两个不同的字符串,而不是使用两个不同的标签。比如说,

let sampleText = "Hey this is a test..." + " " + "1 sec"

如果您担心每行文本的字体不同,您也可以使用属性文本来自定义

我认为这种情况下不需要两个标签

如果希望部分标签文本具有不同的字体,则应使用并设置
label.attributeText
属性

但是,您必须处理截断尾的情况

也许将
lineBreakMode
设置为
。通过截断middle
对您有效

若并没有,您必须计算给定字体的字符串大小,将宽度约束设置为小于或等于,并手动截断文本

可能有用的资源:


您的UI似乎正在做它应该做的事情。对于多行标签,宽度取决于最长行的长度。考虑以下事项:

请注意第一行,“这是”如何确定标签的宽度,因此与此对齐的任何内容都不一定与最后一行对齐

解决此问题的一个选项是以一致的间距编程方式将第二个标签的内容设置为第一个标签的一部分。因此,在视图控制器中,执行以下操作:

self.firstLabel.text = [NSString stringWithFormat:@"%@   %@",firstContent,secondContent];

只需确定代码中所需的间距。我知道这是Objective-C,但你明白我的意思。如果要为两个文本保留不同的属性,您也可以使用attributed text属性。

您在两个标签之间设置了哪些约束?@Paulw11时间标签与消息标签和4px Leading的基线对齐查看我问题中的第二张图片,你怎么知道什么时候剪下第一个标签?您不能截断标签的尾部,因为这会破坏“1秒”部分。所以,如果第一个字符串真的很长,我该怎么做才能知道何时用“…”替换文本?您可以设置字符限制。在x个字符之后,第一个字符串将被截断,然后您可以在该字符串的末尾追加“1秒”。我觉得你的问题和这个差不多,对吧?是的,我认为基本上是相同的问题。字符限制可能会使它有点不一致,但这可能是接近我想要的最简单的方法。我不知道如何处理截断第一个字符串,并且仍然允许始终显示第二个字符串。我不能截断标签的尾部,从技术上讲我可以截断中间部分,但这看起来很糟糕。你知道如果第一个字符串的宽度太大,我如何确定在哪里用“…”替换它的结尾吗?我使用了一个标签。通过截断中间,但我的设计师不喜欢它,所以我一直试图用两个标签来解决它。我不确定如何确定手动截断第二行的最大宽度。看起来您需要类似的东西: