Выровненный арабский или персидский текст или любое направление языка справа налево — iOS

Как правильно перевести текст на арабском или персидском языке или любой другой язык справа налево?


person Mohammad    schedule 01.02.2017    source источник


Ответы (1)


Обоснованный текст на персидском или арабском языке в приложении невозможен с:

NSTextAlignmentJustifie

и я не могу найти четкого решения для этого; поэтому я создаю этот метод, возможно, это нужно другому разработчику:

- (NSMutableAttributedString *)MakeJustified_Text:(NSString *)text Font:(UIFont *)font{

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setBaseWritingDirection:NSWritingDirectionRightToLeft];
[paragraphStyle setAlignment:NSTextAlignmentJustified];
[paragraphStyle setLineSpacing:7];

NSMutableAttributedString* attrStr = [[NSMutableAttributedString alloc] initWithString: text];
[attrStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, attrStr.length)];

NSRange range = (NSRange){0,[attrStr length]};
[attrStr enumerateAttribute:NSFontAttributeName inRange:range options:NSAttributedStringEnumerationLongestEffectiveRangeNotRequired usingBlock:^(id value, NSRange range, BOOL *stop) {
    UIFont *replacementFont = font;
    [attrStr addAttribute:NSFontAttributeName value:replacementFont range:range];
}];
return attrStr;}

теперь вы можете использовать этот метод в UITextView или UILabel очень просто с любым шрифтом, который у вас есть:

    UITextView *textview = [[UITextView alloc]init];
[textview setAttributedText:[self MakeJustified_Text:mytext Font:[UIFont fontWithName:@"Font_Name" size:15]]];

надеюсь полезно.

person Mohammad    schedule 01.02.2017