В моем приложении у меня есть UITextView
со многими строками, но мне нужны данные с правильным внешним видом.
Возможно ли иметь выравнивание по выравниванию в UITextView
?
В моем приложении у меня есть 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:@"<div align='justify'>%@<div>",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
, поэтому не требует сложного процесса компоновки, например UIWebView
.
Или вы можете использовать еще один вариант, просто используя нижний уровень CoreText
.
Во всяком случае, они не поддерживают редактирование текста. Если вам это нужно, вы должны реализовать все это самостоятельно.
Нет настроек для выравнивания выравнивания текста, у вас есть только центр, слева и справа. Если вы хотите, чтобы выравнивание было правильным, когда каждая строка имела одинаковое количество символов или что-то подобное, вы можете отформатировать введенный текст, чтобы вернуть каретки после x количества символов или слов или что-то в этом роде.
Для правосторонних языков, таких как персидский
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;