uikit – NSMutableParagraphStyle忽略了NSWritingDirectionNatural,

我正在使用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手动设置语言.

dawei

【声明】:丽水站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。