天天看點

iOS開發-UIWebView加載本地和網絡資料

UIWebView是内置的浏覽器控件,可以用它來浏覽網頁、打開文檔,關于浏覽網頁榜樣可以參考UC,手機必備浏覽器,至于文檔浏覽的手機很多圖書閱讀軟體,UIWebView是一個混合體,具體的功能控件内置的,實作一些基本的功能。UIWebView可以檢視Html網頁,pdf檔案,docx檔案,txt檔案檔案,系統自帶的Safari就是UIWebView實作的。

頁面布局很簡單就是一個文本框,一個按鈕,一個UIWebView,頁面布局如下:

iOS開發-UIWebView加載本地和網絡資料

如果想簡單一點的話,其實用UIWebView也行,不過需要先準備一些文本資料,具體如下:

iOS開發-UIWebView加載本地和網絡資料

①直接拼接Html,用UIWebView顯示,viewDidLoad中添加代碼:

1

2

3

<code>//直接加載Html字元串</code>

<code>NSString</code> <code>*htmlStr=@</code><code>"&lt;html&gt;&lt;head&gt;&lt;title&gt;Html加載&lt;/title&gt;&lt;/head&gt;&lt;body&gt;HtmlDemo-FlyElephant&lt;/body&gt;&lt;/html&gt;"</code><code>;</code>

<code>[</code><code>self</code><code>.webView loadHTMLString:htmlStr baseURL:</code><code>nil</code><code>];</code>

 

iOS開發-UIWebView加載本地和網絡資料

②加載本地的Html網頁,Book.html中代碼:

4

5

6

7

8

9

10

<code>&lt;!DOCTYPE html&gt;</code>

<code>&lt;html&gt;</code>

<code>&lt;head&gt;</code>

<code>&lt;meta charset=</code><code>"UTF-8"</code><code>&gt;</code>

<code>&lt;title&gt;書籍&lt;/title&gt;</code>

<code>&lt;/head&gt;</code>

<code>&lt;body&gt;</code>

<code>少年維特之煩惱-歌德</code>

<code>&lt;/body&gt;</code>

<code>&lt;/html&gt;</code>

viewDidLoad代碼:

<code>NSString</code> <code>*filePath = [[</code><code>NSBundle</code> <code>mainBundle]pathForResource:@</code><code>"Book"</code> <code>ofType:@</code><code>"html"</code><code>];</code>

<code>NSString</code> <code>*htmlString = [</code><code>NSString</code> <code>stringWithContentsOfFile:filePath encoding:</code><code>NSUTF8StringEncoding</code> <code>error:</code><code>nil</code><code>];</code>

<code>[</code><code>self</code><code>.webView loadHTMLString:htmlString baseURL:[</code><code>NSURL</code> <code>URLWithString:filePath]];</code>

iOS開發-UIWebView加載本地和網絡資料

③加載本地的pdf檔案,viewDidLoad代碼:

<code>NSURL</code> <code>*url = [[</code><code>NSBundle</code> <code>mainBundle]URLForResource:@</code><code>"Book.pdf"</code> <code>withExtension:</code><code>nil</code><code>];</code>

<code>NSURLRequest</code> <code>*request = [</code><code>NSURLRequest</code> <code>requestWithURL:url];</code>

<code>[</code><code>self</code><code>.webView loadRequest:request];</code>

  

iOS開發-UIWebView加載本地和網絡資料

加載pdf的第二種方式:

<code>NSString</code> <code>*path = [[</code><code>NSBundle</code> <code>mainBundle]pathForResource:@</code><code>"Book.pdf"</code> <code>ofType:</code><code>nil</code><code>];</code>

<code>//以二進制的形式加載資料</code>

<code>NSData</code> <code>*data = [</code><code>NSData</code> <code>dataWithContentsOfFile:path];</code>

<code>[</code><code>self</code><code>.webView loadData:data MIMEType:@</code><code>"application/pdf"</code> <code>textEncodingName:@</code><code>"UTF-8"</code> <code>baseURL:</code><code>nil</code><code>];</code>

④加載本地txt檔案,viewDidLoad代碼如下:

<code>//加載txt</code>

<code>       </code><code>NSURL</code> <code>*url = [[</code><code>NSBundle</code> <code>mainBundle]URLForResource:@</code><code>"Book.txt"</code> <code>withExtension:</code><code>nil</code><code>];</code>

<code>       </code><code>//設定Url</code>

<code>       </code><code>[</code><code>self</code><code>.webView loadRequest:[</code><code>NSURLRequest</code> <code>requestWithURL:url]];</code>

iOS開發-UIWebView加載本地和網絡資料

⑤加載Word,viewDidLoad代碼如下:

<code>//加載Word</code>

<code>NSURL</code> <code>*url = [[</code><code>NSBundle</code> <code>mainBundle]URLForResource:@</code><code>"Book.docx"</code> <code>withExtension:</code><code>nil</code><code>];</code>

<code>//設定加載Url</code>

<code>[</code><code>self</code><code>.webView loadRequest:[</code><code>NSURLRequest</code> <code>requestWithURL:url]];</code>

iOS開發-UIWebView加載本地和網絡資料

⑥加載網絡資料,跳轉按鈕事件中實作如下:

<code>NSURLRequest</code> <code>*request =[</code><code>NSURLRequest</code> <code>requestWithURL:[</code><code>NSURL</code> <code>URLWithString:</code><code>self</code><code>.urlText.text]];</code>

iOS開發-UIWebView加載本地和網絡資料

⑦設定委托,在不同的階段處理資料,實作UIWebViewDelegate,設定自己本身為委托對象;

<code>[</code><code>self</code><code>.webView setDelegate:</code><code>self</code><code>];</code>

常用的三個方法:

11

12

<code>//加載開始</code>

<code>- (</code><code>void</code><code>)webViewDidStartLoad:(UIWebView *)webView{</code>

<code>    </code><code>NSLog</code><code>(@</code><code>"加載開始的時候的方法調用"</code><code>);</code>

<code>}</code>

<code>//加載完成</code>

<code>-(</code><code>void</code><code>)webViewDidFinishLoad:(UIWebView *)webView{</code>

<code>    </code><code>NSLog</code><code>(@</code><code>"加載完成的時候電腦方法調用"</code><code>);</code>

<code>//加載出錯</code>

<code>- (</code><code>void</code><code>)webView:(UIWebView *)webView didFailLoadWithError:(</code><code>NSError</code> <code>*)error{</code>

<code>    </code><code>NSLog</code><code>(@</code><code>"加載出錯的時候的調用"</code><code>);</code>

  本文轉自Fly_Elephant部落格園部落格,原文連結:http://www.cnblogs.com/xiaofeixiang/p/4307573.html,如需轉載請自行聯系原作者

繼續閱讀