2017-09-14 77 views
1

写RTL字符串我收到两个字符串从服务器上一个UILabel

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模式,它没有帮助。我也尝试使用两个属性字符串并将它们追加到第三个字符串中,但它也不起作用。你有没有使用两个标签如何解决这个问题的想法?

+0

您能发送一段代码吗?你尝试过这种语法:'print(“\(firstString):\(secondSctring)”)'? –

+0

我不打印文本,我将它添加到lableView – Mbf

回答

1

前一段时间我面临同样的问题,我的管理符合

的0x200E Unicode字符是无形的,但把渲染回左到右的方式来做到这一点。

以上之后,这是我得到的输出:

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:ذيسإز اىتست

希望它对您有所帮助