在滚动时填充UITextView



是否有加载文本从文件到UITextView的部分,但保持滚动平滑(如加载文本到UITableView和分裂它之间的多个单元格)?

例如:我有一个RTF(富文本文件),其中有超过120,000个单词。由于属性和单词的数量,滚动是不稳定的。我想尝试释放内存。而不是一次加载整个文本文件,我想加载刚好足够的文本,以适应屏幕,使滚动看起来平滑。

我看到过这个答案:读取文本文件的特定部分,处理读取文件的特定部分,但我的文件无论如何都没有被特殊字符分割。

代替使用UITextView和RTF,您可以使用UIWebView和HTML(使用转换工具将RTF转换为HTML)。下面是如何将其连接起来并更改文本大小。您可以随时调用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];
}

最新更新