目標 : webview使用html
在一些移動app中,有時程序會載入 外表的html 界面, android 有 webView ios 有嗎, 答案是確定的, 下面咱們來看看 ios 下面的webView 是怎麼使用的吧android
啓動Xcode 建立一個新的ios 項目 , 模板選擇 Signle view application , 項目名稱命名爲 Iphone_sample_WebView class Prefix 命名爲 : WebView 如圖:ios
進入項目 ,打開 WebViewViewController.xib 視圖文件 拖一個WebView 組件到view中如圖web
點擊助理編輯器 xcode
此時界面以下網絡
爲webview 創建鏈接 : 按住 ctrl 鍵 拖webview組件到 WebViewViewController.h 文件中的@interface WebViewViewController : UIViewController<UIWebViewDelegate> 代碼 下面 如圖 :app
鬆開鼠標 ,位置正確的話 如上圖, 會彈出一個對話框,讓你填寫鏈接信息 : 咱們只填 Name 值 就能夠了 在name 內容框填寫 「webView」 點擊 connent 完成鏈接編輯器
執行這一步 xcode 會爲咱們生成一系列的代碼,在WebViewViewController.h 文件中生成了一個輸出口,在WebViewViewController.m 文件中生成了webView對象的管理方法。 各位童鞋細心觀察下 就會知道ide
下面咱們在 WebViewViewController.m 控制器中爲webview 添加行爲函數
在 WebViewViewController.m文件的 - (void)viewDidLoad 方法中 添加一下代碼
- (void)viewDidLoad
{
[super viewDidLoad];
NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];
[self.webView loadRequest:request];
// Do any additional setup after loading the view, typically from a nib.
}
運行咱們的模擬器 看看吧, 這時咱們已經能夠 在視圖上打開 百度地址了。 如圖 :
但這在實際應用中遠遠還不夠呢, 由於移動網絡的問題,可能會出現html頁面打不開,打開慢,或者出錯等等,咱們都須要坐相應的提示操做。因此咱們還須要繼續給webview 優化下,讓用戶體驗更好 。
下面咱們看看webview 幾個經常使用的方法
一.UIWebView加載的時候一般有幾種方法
1.loadRequest:
2.loadHTMLString:string baseURL:
3.loadData:MIMEType:textEncodingName:baseURL:
其中baseURL 是指基準的url 是一個絕對的地址,程序要用到的其餘資源就能夠根據這個基準地址進行查找而不用再次定位到絕對地址;
1.- (void )webViewDidStartLoad:(UIWebView *)webView 網頁開始加載的時候調用
2.- (void )webViewDidFinishLoad:(UIWebView *)webView 網頁加載完成的時候調用
3.-(BOOL )webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType )navigationType
當程序以UIWebView加載方式1進行加載的時候就會調用到此函數,而後執行webViewDidStartLoad函數,因此咱們能夠在此函數中進行一些請求解析,URL地址分析的工做。
4.- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
是一個可選的函數,若是頁面加載失敗能夠根據不一樣的錯誤類型反饋給用戶不一樣的信息
那咱們在代碼中如何實現這幾個方法呢
1: 在WebViewViewController.h文件中 聲明協議 在.h 添加下面紅色部分的代碼
@interface WebViewViewController : UIViewController<UIWebViewDelegate>
@property (retain, nonatomic) IBOutlet UIWebView *webView;
@end
2:在WebViewViewController.m 文件中實現下面幾個方法
1.- (void )webViewDidStartLoad:(UIWebView *)webView 網頁開始加載的時候調用
2.- (void )webViewDidFinishLoad:(UIWebView *)webView 網頁加載完成的時候調用
3.- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 網頁加載錯誤的時候調用
咱們就能夠在這幾個方法裏面作處理了。
接着上面的繼續 ,往下坐 , 在加載的時候 給用戶等待提示,加載完成後 取消等待提示
1:打開WebViewViewController.xib 文件 在視圖文件拖一個 Actionvity IndicationView 組件,擺好位置, 而且添加鏈接 此步和 webView 添加鏈接步驟是同樣的 忘了 看看上面去 。嘻
2:給webView 添加委託 在WebViewViewController.m 文件中- (void)viewDidLoad方法中 給webview 添加委託 最終以下面代碼
- (void)viewDidLoad
{
[super viewDidLoad];
[self.webView setDelegate:self];
NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.163.com"]];
[self.webView loadRequest:request];
// Do any additional setup after loading the view, typically from a nib.
}
由於必須給 webview添加委託 才能夠回調那個幾個webview 函數喔 這一步不要忘了喔
各位童鞋 也能夠直接在 xib視圖文件中直接給webView添加委託,按住ctrl鍵 點擊ViewView組件 而後選擇 OutLets 下面的 Delegate 拖至File,s Ownver 便可
而後 在 WebViewViewController.m 文件的實現下面代碼
-(void)webViewDidStartLoad:(UIWebView *)webView
{
NSLog(@"load ing");
[activityIndicationView startAnimating];
activityIndicationView.hidden=NO;
}
-(void)webViewDidFinishLoad:(UIWebView *)webView{
NSLog(@"finish ing");
[activityIndicationView stopAnimating];
activityIndicationView.hidden=YES;
}
保存運行 ,這裏沒有實現 錯誤的 方法喔 ,各位童鞋若是有興趣 ,能夠本身 是試試
搞定 。 不明白之處 歡迎留言,一塊兒學習共同進步。
源碼 下載地址: