2013-08-16 32 views
1

我想如下從字符串加載UIWebView緩慢的加載一個UIWebView從字符串

NSString* plainContent = @"..."; 
    NSString* htmlContentString = [[NSString stringWithFormat: 
            @"<html>" 
            "<style type=\"text/css\">" 
            "body { background-color:transparent; font-family:Arial-BoldMT; font-size:18;}" 
            "</style>" 
            "<body>" 
            "<p>%@</p>" 
            "</body></html>", plainContent] retain]; 
    [webView loadHTMLString:htmlContentString baseURL:nil]; 

凡平原含量與約5鏈接和400個字符的一些簡單的HTML。我試圖在我的iPhone5上運行它,並且第一次加載它總是需要幾秒鐘的時間。有誰知道爲什麼會發生這種情況,以及如何解決這個問題?

回答

3

這通常是因爲在渲染網頁時使用CSS而發生的。在本地加載頁面時,這是默認行爲。我們也可以考慮在第一次加載時,UIWebview沒有緩存,併爲該頁面創建緩存。

爲了讓它快點嘗試從文件加載頁面,例如

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"filePath" ofType:@"html" inDirectory:@"."]]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
[webView loadRequest:request]; 

CSSbody { background-color:transparent; font-family:Arial-BoldMT; font-size:18;}還增加加載頁面的時間。

0

對於其他遇到此問題的人,有時我們通過從現有網站複製粘貼來創建HTML文件,並且我們忘記檢查標題上的鏈接。

就我而言,我忘了刪除未使用的link rel在我的html串標頭:

NSString* html = [NSString stringWithFormat:@"<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><title>%@</title><link type=\"text/css\" rel=\"stylesheet\" href=\"http://192.168.3.183/assets/css/question.css?1383042738\" /></head><body><h1 style=\"font-size: 2em; margin-bottom: 0; color: #3357b8; font-weight: bold\">%@</h1><div style=\"color: #555\">%@</div><br><p style=\"line-height: 1.7em\">%@</p><a href=\"%@\"><b>Open in browser</b></a><br></body></html>", title, title, dateString, content, detail]; 

通過上面的鏈接相對指向本地URL使加載時間更壞。

<link type=\"text/css\" rel=\"stylesheet\" href=\"http://192.168.3.183/assets/css/question.css?1383042738\" /> 

只是不要忘了重新檢查你的頭或其他鏈接,在HTML字符串,刪除它,如果它不被使用。

4

我最近與UIWebView的性能掙扎。處理我提供的本地HTML(iPad Air 2模擬器上的1秒或2秒)似乎需要很長時間,即使它非常小。

經過大量的谷歌搜索,我發現的罪魁禍首是電話號碼檢測在web視圖上。一旦我在故事板上取消選中它,延遲就消失了。

希望它可以幫助有人面臨同樣的問題:)

+0

你是正確的兄弟...謝謝你爲我工作...... :-) – Alwin