Обоснованное выравнивание в UITextView – iPhone

В моем приложении у меня есть UITextView со многими строками, но мне нужны данные с правильным внешним видом.

Возможно ли иметь выравнивание по выравниванию в UITextView ?

Я знаю, что это старый вопрос, но теперь у нас есть новости о:

 UITextView *textView = // init your text view textView.textAlignment = NSTextAlignmentJustified; 

Вот и все !

UPDATE: это работает только на iOS 6 и выше

Я пришел к решению, которое работает. Прежде всего, вам нужно будет изменить UITextView и вместо этого использовать UIWebView .

Details.h

 @interface Details : UIViewController { IBOutlet UIWebView *descripcion; } @property (nonatomic, retain) UIWebView *descripcion; 

Затем загрузите свой UIWebView следующим образом:

Details.m

 [descripcion loadHTMLString:[NSString stringWithFormat:@"
%@
",YOUR_TEXT] baseURL:nil];

Существует решение:

 NSString *text1 = @"Sample text : A his is my weblog in English, German and Korean. If you want to know more about a pizza stone once it's cooled down."; NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; [style setAlignment: kCTJustifiedTextAlignment]; NSAttributedString * subText1 = [[NSAttributedString alloc] initWithString:text1 attributes:@{ NSParagraphStyleAttributeName : style }]; _myUiTextView.attributedText = subText1; 

Есть еще один вариант. CATextLayer .

Он явно поддерживает обоснованное выравнивание. И это намного легче и быстрее, чем UIWebView . Потому что это по существу тонкий слой поверх CoreText , поэтому не требует CoreText процесса компоновки, такого как UIWebView .

Или вы можете использовать еще один вариант, просто используя CoreText структуру CoreText .

Во всяком случае, они не поддерживают редактирование текста. Если вам это нужно, вы должны реализовать все это самостоятельно.

Для правосторонних языков, таких как персидский

  UITextPosition *beginning = textview.beginningOfDocument; UITextPosition *start = [textview positionFromPosition:beginning offset:0]; UITextPosition *end = [textview positionFromPosition:start offset:[textview.text length]]; UITextRange *textRange = [textview textRangeFromPosition:start toPosition:end]; [textview setBaseWritingDirection:UITextWritingDirectionRightToLeft forRange:textRange]; textview.textAlignment = NSTextAlignmentJustified; 

Для выравнивания текста нет настроек, у вас есть только центр, слева и справа. Если вы хотите, чтобы выравнивание было правильным, где каждая строка имела одинаковое количество символов или что-то подобное, вы можете отформатировать введенный текст, чтобы возврат каретки после x количества символов или слов или что-то в этом роде.

Interesting Posts
Давайте будем гением компьютера.