【问题标题】:Write RTL String on a UILabel在 UILabel 上写入 RTL 字符串
【发布时间】:2017-09-14 11:32:53
【问题描述】:

我从服务器收到两个字符串

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 模式,但没有帮助。我还尝试使用两个属性字符串并将它们附加到第三个字符串中,它也没有用。你知道如何在不使用两个标签的情况下解决这个问题吗?

【问题讨论】:

  • 你能发一份你的代码的sn-p吗?您是否尝试过以下语法:print("\(firstString):\(secondSctring)")
  • 我没有打印文本,我将它添加到一个 lableView

标签: ios swift string uilabel


【解决方案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 : ذيس إز اى تست

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多