微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

uikit – NSMutableParagraphStyle忽略了NSWritingDirectionNatural,默认为LTR用于阿拉伯语文本

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

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

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];
}

但它仍然从左向右流动:

我错过了什么?

解决方法

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

“如果指定了NSWritingDirectionNaturalDirection,则接收方将写入方向解析为NSWritingDirectionLeftToRight或NSWritingDirectionRightToLeft,具体取决于用户语言首选项设置的方向.”

出于某种原因,如果没有将语言添加支持的本地化版本,即使选择了阿拉伯语,您仍然无法使用该文本.这个角色似乎没有为我做这件事:كتب

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

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

原文地址:https://www.jb51.cc/mssql/74695.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐