Apple 使用“Unicode 双向算法”来呈现文本。
如果字符串中的第一个字符是 LTR(左到右),则算法将字符串其余部分的表示视为 LTR(右到左)。所以当英文跟阿拉伯语混在一起的时候,英语一定展示在前面(英语在前,就是LTR,所以英语在左边;阿拉伯语在前,就是RTL,在后面的英语就会在左边展示)
如果要强制RTL需要在文本前后各加一个特殊符号,文案前加\u200F ,文案后加\u202c。表示这段话要RTL,例如:
[NSString stringWithFormat:@"\u200F%@\u202c", @"your string with RTL content"]
如果要强制LTR需要在文本前后各加一个特殊符号,文案前加\u200E,文案后加\u202c。 表示这段话要LTR,例如:
[NSString stringWithFormat:@"\u200E%@\u202c", @"your string with LTR content"]
如果有换行的话,要在每行各自进行处理,例如这样:
NSString *str = @" فقط \n\u200Fabcdكل شهر \u202c";
如果没有加特殊字符就会这样: