我的情况是,由于本地化,我有一行文本的长度可能会有所不同。这将需要显示在屏幕上,使每条线的长度大致相等,并且居中。
这是我很长的一行。
应该是这样的
This is my
very long line.
最佳答案
所以我对此进行了尝试,并得到了一些可以按我现在想要的方式工作的东西。
我获取一个本地化字符串,将其设置为一个空标签,然后找出它的大小。 (橙色只是为了说明目的)
根据标签的大小,我将其除以 1.8,这为我提供了一些缓冲空间来解决不一致的字长(同样,我不知道这里会提前出现什么)。最后,我将高度乘以 2.0,并将其设置为我的新框架。最后,我将它添加到 View 中。
这已经支持了一些示例字符串,但需要对其进行修改以处理超过 2 行(目前,这不是问题)。
let text = NSLocalizedString("This is my very long line of text.", comment: "")
let instructionLabel = UILabel()
instructionLabel.text = text
instructionLabel.textAlignment = .center
instructionLabel.backgroundColor = .orange
instructionLabel.numberOfLines = 0
let size = instructionLabel.intrinsicContentSize
let newSize = CGSize(width: size.width / 1.8, height: size.height * 2.0)
let rect = CGRect(x: 20, y: 100, width: newSize.width, height: newSize.height)
instructionLabel.frame = rect
view.addSubview(instructionLabel)
产生以下输出:
还有一个更长的:
只是为了一些变化,这是上面的第二个字符串,但是是阿拉伯语:
关于ios - 以编程方式动态居中 2 行文本,每行长度大致相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42842442/