我有一个多行UILabel,另一个标签应该在第一个结束后立即开始。
如您所见,带有“39秒”的第二个标签与消息标签的左侧和基线对齐。
这也没问题,但是当消息标签需要两行时会出现问题,但第二行比第一行短。这是我遇到麻烦的照片:
所以我需要弄清楚如何将第二个标签(带有时间的标签)与文本在第一个标签上结束的右侧对齐。有没有任何已知的方法可以做到这一点,还是有一个我不知道的不同解决方案?
答案 0 :(得分:0)
我不使用两个不同的标签,而是使用字符串连接并使用相同的标签并组合两个不同的字符串。例如,
let sampleText = "Hey this is a test..." + " " + "1 sec"
如果您担心每行文字的字体不同,您也可以使用属性文本来自定义。
答案 1 :(得分:0)
我认为在这种情况下你不需要2个标签。
如果您希望部分标签文字使用不同的字体,则应使用NSAttributedString
并设置label.attributedText
属性。
但是,您必须处理截断的尾部情况。
将lineBreakMode
设置为.byTruncatingMiddle
可能会对您有用吗?
如果没有,则必须为给定字体计算字符串的大小,将宽度约束设置为更小或相等,并手动截断文本。
潜在有用的资源:
How to calculate the width of a text string of a specific font and font-size?
答案 2 :(得分:0)
您的用户界面似乎正在做它应该做的事情。对于多线标签,宽度取决于最长线的长度。请考虑以下事项:
注意第一行“这是”如何确定标签的宽度,以便与此对齐的任何内容都不一定与最后一行对齐。
解决此问题的一个选项是使用一致的间距以编程方式将第二个标签的内容设置为第一个的一部分。因此,在View Controller中,执行以下操作:
self.firstLabel.text = [NSString stringWithFormat:@"%@ %@",firstContent,secondContent];
只需在代码中确定所需的间距即可。我知道这是Objective-C,但你得到了漂移。如果要为两个文本维护不同的属性,也可以使用属性文本属性。