9

私はアプリのテキストエディタに取り組んでいます。私はUITextViewを使用しています

テキスト ビューを読み込むサンプル コードを参照してください。

// Read text from file (around 300k - 400k words)
NSError *error = nil;
NSString *contentOfFile = [[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"17254" ofType:@"txt"]
                                                          encoding:NSUTF8StringEncoding
                                                             error:&error];

// Attributes for text
UIFont *font = [UIFont fontWithName:@"Baskerville" size:36.0f];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.alignment = NSTextAlignmentJustified;

NSDictionary *attributes = [[NSDictionary alloc] initWithObjectsAndKeys:font, NSFontAttributeName,
                            [UIColor blackColor], NSForegroundColorAttributeName,
                            paragraphStyle, NSParagraphStyleAttributeName, nil];


// Create attributed string
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:contentOfFile attributes:attributes];

// Assign to text view
self.textView.attributedText = attributedString;

テキストのサイズは約 400k ワードです。

私は次の問題に直面しています。

  • 下にスクロールするとテキストのスクロールが遅くなり、メモリの問題によりアプリがクラッシュすることがあります。テキストビューを下にスクロールすると、iOSはレンダリングされたテキスト画像をメモリに保存していると思いますが、上にスクロールするとメモリが解放されます。

  • [すべて選択] をタップすると、テキストの選択に時間がかかりすぎて、テキストの選択後にスクロールが遅くなり、メモリが増加するためにメモリの問題でアプリがクラッシュすることがあります。iOSはメモリ内に完全なテキストの画像(ユーザーに見えるかのように)を生成し、完全なテキストを選択して、選択が完了するまでその画像を保持すると思います。選択が終了すると、アプリのドロップによってメモリが保持されます。

大きなテキストを表示するもう 1 つの方法は、複数のテキストビューを使用して、テキストを UITableView のように表示可能なテキストビューにのみ割り当てることですが、UItextView の layoutManager の textChanged デリゲート呼び出しごとに必要なテキストビューの数を再計算する必要があるため、複雑さが増します。 .

UITextView で大きな属性付きテキストをより良いパフォーマンスで表示する方法は、誰にでもあります。

領域が可視範囲内にあるときにテキストを表示するため、iPages アプリがどのように機能しているかを推測します。

4

1 に答える 1