Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

И что это!

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

Ответ 2

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

Details.h

@interface Details : UIViewController {
    IBOutlet UIWebView *descripcion;
}

@property (nonatomic, retain) UIWebView *descripcion;

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

Details.m

[descripcion loadHTMLString:[NSString stringWithFormat:@"<div align='justify'>%@<div>",YOUR_TEXT] baseURL:nil];

Ответ 3

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

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;

Ответ 4

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

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

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

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

Ответ 5

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

Ответ 6

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

    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;