在滚动时填充UITextView

时间:2016-10-13 13:22:42

标签: objective-c uitextview rtf

无论如何,将文件从文件加载到UITextView中的部分仍然保持滚动顺畅(比如将文本加载到UITableView并将其分成多个单元格)?

例如:我有一个RTF(富文本文件),其中包含超过120,000个单词。由于属性和单词的数量,滚动是不连贯的。 我想尝试一下自由记忆。我不想一次加载整个文本文件,而是想加载足够的文本以适应屏幕并使滚动看起来更流畅。

我已经看到了这个答案:Reading Specific Part Of A Text File处理读取文件的特定部分,但我的文件不会被特殊字符分解。

1 个答案:

答案 0 :(得分:1)

您可以使用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];
}