我从服务器接收到两个字符串
firstString = "JHKJ"
secondSctring = "ذيس إز اى تست"
在 LTR 模式下,我希望标签打印 JHKJ: ذيس إò اى تست
在 RTL 模式下,我希望标签打印 ذيس إò اى تست : JHKJ
如果我通常连接字符串
let finalString = firstString + ":" + secondSctring
标签在 RTL 和 LTR 上显示相同的结果:
JHKJ: ذيس إز اى تست
即使我改变连接顺序
if rtl{
finalString = secondSctring + ":" + firstString
}else{
finalString = firstString + ":" + secondSctring
}
myLabelView.text = finalString
结果还是一样:
JHKJ: ذيس إز اى تست
我还试图强制标签只使用 LTR 模式,但没有帮助。我还尝试使用两个属性字符串并将它们附加到第三个字符串中,但它也没有用。您知道如何在不使用两个标签的情况下解决这个问题吗?
最佳答案
一段时间前我遇到了同样的问题,我设法用
解决了The 0x200E unicode character is invisible but puts the rendering back into left-to-right mode.
在上面之后,这是我得到的输出:
let firstString = "JHKJ"
let secondSctring = "ذيس إز اى تست"
let finalString = firstString + ":" + secondSctring
var result1: String = "\u{200E}\(secondSctring) : \(firstString)"
var result2: String = "\u{200E}\(firstString) : \(secondSctring)"
result1 ذيس إز اى تست : JHKJ
result2 JHKJ : ذيس إز اى تست
希望对你有帮助
关于ios - 在 UILabel 上写入 RTL 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46217995/