滚动时填充 UITextView

Populating UITextView as it scrolls

是否可以将文件中的文本分段加载到 UITextView 中,同时保持滚动流畅(就像将文本加载到 UITableView 中并将其拆分到多个单元格中一样)?

例如:我有一个包含超过 120,000 个单词的 RTF(富文本文件)。由于属性和字数的原因,滚动时断断续续的。 我想尝试释放内存。我不想一次加载整个文本文件,而是想加载足够的文本以适应屏幕并使滚动看起来流畅。

我看过这个答案:Reading Specific Part Of A Text File 处理读取文件的特定部分,但无论如何我的文件都没有被特殊字符分解。

您可以使用 UIWebView 和 HTML(使用转换工具将 RTF 转换为 HTML),而不是使用 UITextView 和 RTF。这是将其全部连接起来并更改文本大小的方法。您可以随时调用 resizeWebViewToSize 来调整文本大小。

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.webView.delegate = self;
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"HtmlFile" ofType:@"html"];
    NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
    [self.webView loadHTMLString:htmlString baseURL: [[NSBundle mainBundle] bundleURL]];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [self resizeWebViewToSize:@"1000"];
}

- (void)resizeWebViewToSize:(NSString *)size
{
    NSString *fontSize=size;
    NSString *jsString = [[NSString alloc]      initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'",[fontSize intValue]];
    [self.webView stringByEvaluatingJavaScriptFromString:jsString];
}