uikit - NSMutableParagraphStyle 忽略 NSWritingDirectionNatural,阿拉伯语文本默认为 LTR

标签 uikit nsattributedstring right-to-left

我正在使用 NSAttributedString UIKit Additions 在 UIView 中绘制属性字符串。我遇到的问题是,尽管使用了 NSWritingDirectionNatural 的值为 baseWritingDirection我的段落样式属性,文本始终默认为从左到右。

这是我如何形成属性字符串(简化):

NSString *arabic = @"العاصمة الليبية لتأمينها تنفيذا لقرار المؤتمر الوطني العام. يأتي ذلك بعدما أعلن اللواء الليبي المتقاعد خليفة حفتر أنه طلب من المجلس الأعلى للقض الدولة حتى الانتخابات النيابية القادمة";

NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
paragraph.baseWritingDirection = NSWritingDirectionNatural;
paragraph.lineBreakMode = NSLineBreakByWordWrapping;

NSMutableDictionary *attributes = [[NSMutableDictionary alloc] init];
attributes[NSParagraphStyleAttributeName] = paragraph;

NSAttributedString *string = [[NSAttributedString alloc] 
                             initWithString:arabic 
                             attributes:attributes];

这是我绘制文本的方式:
- (void)drawRect:(CGRect)rect {
    [self.attributedText drawWithRect:rect 
                              options:NSStringDrawingUsesLineFragmentOrigin 
                              context:nil];
}

然而它仍然从左到右流动:

screenshot

我错过了什么?

最佳答案

我不相信使用 baseWritingDirection 会自动为您设置书写方向,除非您在设备上切换语言:

“如果您指定 NSWritingDirectionNaturalDirection,接收器会将书写方向解析为 NSWritingDirectionLeftToRight 或 NSWritingDirectionRightToLeft,具体取决于用户语言首选项设置的方向。”

出于某种原因,即使在未将语言添加到支持的本地化中的情况下选择了阿拉伯语,您拥有的文本似乎仍然无法使用。这个角色似乎在没有为我这样做的情况下工作:كتب

此外,它看起来像 Xcode reverses the characters在硬编码的阿拉伯语字符串中,因此可能会搞砸其中的一些复制和粘贴。

您可以使用 agiletortoisessuggestionNSLinguisticTagger's Language tag scheme手动设置语言。

关于uikit - NSMutableParagraphStyle 忽略 NSWritingDirectionNatural,阿拉伯语文本默认为 LTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23810796/

相关文章:

Webview 中的 Android 2.3 希伯来语支持

iphone - ios/xcode 使文本书写方向从右到左

objective-c - Objective c 禁用阿拉伯语的自动布局本地化行为

html - 使用字体从 HTML 设置标签文本 NSAttributedString

ios - 在 Tableview 中,我想知道如何在单元格最后位置设置多行 UILabel

ios - View 不粘在顶部(不改变位置)

swift - 带有自定义 View 的 UIBarButtonItem 不适用于 UIHostingController

iphone - 更新了 NSAttributedString 中的子字符串

ios - 在 UITextView 中向 NSString 添加外部描边

iphone - 如何动态创建类的实例?