2016-10-13 237 views
2

有沒有辦法從文件加載文件到UITextView的部分,但保持滾動平滑(像加載文本到UITableView和分裂了多個單元格)?填充UITextView,因爲它滾動

例如:我有一個RTF(富文本文件),其中有超過120,000個字。由於屬性和詞的數量,滾動是波濤洶涌。 我想嘗試一個釋放內存。我不想一次加載整個文本文件,而是想加載足夠的文本以適應屏幕,並使滾動看起來平滑。

我見過這個答案:Reading Specific Part Of A Text File處理閱讀文件的特定部分,但我的文件不是由特殊字符分解。

+1

您是否嘗試過使用webView代替textView? – Alex

+0

@Alex你是一個嚮導! Sidepoint:Webview不能改變文本大小,文本對齊等。對吧? - 我知道你可以搜索標籤...但RTF沒有標籤,因爲它不是HTML的權利? – huddie96

+0

我不知道你是否可以將RTF轉換爲html文檔,然後添加格式?你應該能夠將html元素作爲文本添加到我想的rtf文本中。 – Alex

回答

1

而不是使用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]; 
} 
+0

調整大小以及初始加載需要花費相當長的時間。無論如何加快它? – huddie96

+0

我問了一個新的問題,因爲這個應該是它自己的:http://stackoverflow.com/questions/40062963/smooth-resizing-of-uiwebview-font – huddie96