滚动时填充 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];
}
是否可以将文件中的文本分段加载到 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];
}