Обоснованное выравнивание в UITextView – iPhone
В моем приложении у меня есть UITextView
со многими строками, но мне нужны данные с правильным внешним видом.
Возможно ли иметь выравнивание по выравниванию в UITextView
?
- Как изменить цвет части TextView?
- Как сделать UITableViewCell с UITextView внутри, который динамически регулирует его высоту на основе UITextView?
- Как остановить прокрутку UITextView при входе в нее
- Изменить размер шрифта для заполнения UITextView?
- Как динамически изменять размер UITableViewCell
- Изображение UITextView
- UITextView с подсветкой синтаксиса
- Как убрать клавиатуру для UITextView с ключом возврата?
- UITextView линейчатый фон, но неправильная высота строки
- Ограничить количество строк для UITextview
- Как перехватить ссылку на ссылку в UITextView?
- Как я могу сделать ссылку на клики в NSAttributedString?
- Как настроить UITextView на его содержимое на iOS 7?
Я знаю, что это старый вопрос, но теперь у нас есть новости о:
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 количества символов или слов или что-то в этом роде.