我正在使用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,因此可能会搞砸一些复制和粘贴.
您可以使用agiletortoises的suggestion或NSLinguisticTagger’s Language tag scheme手动设置语言.
原文地址:https://www.jb51.cc/mssql/74695.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。