web-dev-qa-db-ja.com

UITextViewでの位置合わせの正当化-iPhone

私のアプリケーションでは、多くの行を持つUITextViewがありますが、適切な外観のデータが必要です。

UITextViewで位置合わせを正当化することは可能ですか?

24

私はそれが古い質問であることを知っていますが、今私たちはについてのニュースを持っています:

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

以上です !

更新:これはiOS6以降でのみ機能します

70
fencingCode

私はうまくいく解決策にたどり着きました。まず、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];
12
Roger

解決策があります:

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;
10
Andro

別のオプションがあります。 CATextLayer

正当化された配置を明示的にサポートします。また、UIWebViewよりもはるかに軽量で高速です。本質的にはCoreText上の薄いレイヤーであるため、UIWebViewのような重いレイアウトプロセスは必要ありません。

または、下位レベルのCoreTextフレームワークを直接使用して、もう1つのオプションを使用することもできます。

とにかく、彼らはテキスト編集をサポートしていません。必要な場合は、すべて自分で実装する必要があります。

7
Eonil

ペルシア語のような右から左に書く言語の場合

    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;
5

中央、左、右しかないテキストの位置合わせの設定はありません。すべての行に同じ量の文字などが含まれる位置合わせが必要な場合は、入力したテキストをフォーマットして、x個の文字または単語の後にキャリッジリターンを表示することができます。

3
Daniel