我正在使用NSAttributedString UIKit添加来绘制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];
}然而,它仍然从左向右流动:

我遗漏了什么?
发布于 2014-05-22 16:00:26
我不相信使用baseWritingDirection会自动为您设置书写方向,除非您在设备上切换语言:
“如果指定NSWritingDirectionNaturalDirection,则接收方将写入方向解析为NSWritingDirectionLeftToRight或NSWritingDirectionRightToLeft,这取决于用户语言首选项设置的方向。”
由于某些原因,即使选择了阿拉伯语,但没有将语言添加到所支持的本地化中,您的文本似乎仍然无法工作。这个角色似乎不适合我:كتب
另外,它看起来像硬编码的阿拉伯字符串中的Xcode reverses the characters,因此可能会修改其中的一些复制和粘贴。
您可以使用agiletortoises的suggestion或NSLinguisticTagger's Language tag scheme手动设置语言。
发布于 2014-05-25 09:48:28
不知道这是否相关,但当我测试从右到左的自动布局支持时,它没有工作,直到我添加了该语言的本地化(阿拉伯语,希伯来语等)到应用程序。
https://stackoverflow.com/questions/23810796
复制相似问题