私のアプリケーションでは、多くの行を持つUITextView
がありますが、適切な外観のデータが必要です。
UITextView
で位置合わせを正当化することは可能ですか?
私はそれが古い質問であることを知っていますが、今私たちはについてのニュースを持っています:
UITextView *textView = // init your text view
textView.textAlignment = NSTextAlignmentJustified;
以上です !
更新:これはiOS6以降でのみ機能します
私はうまくいく解決策にたどり着きました。まず、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
フレームワークを直接使用して、もう1つのオプションを使用することもできます。
とにかく、彼らはテキスト編集をサポートしていません。必要な場合は、すべて自分で実装する必要があります。
ペルシア語のような右から左に書く言語の場合
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個の文字または単語の後にキャリッジリターンを表示することができます。