一.UIWebView加載的時候通常有幾種方法
1.loadRequest:
2.loadHTMLString:string baseURL:
3.loadData:MIMEType:textEncodingName:baseURL:
其中baseURL 是指基准的url 是一個絕對的地址,程序要用到的其他資源就可以根據這個基准地址進行查找而不用再次定位到絕對地址;
二.UIWebView中幾個重要的函數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.在.h文件中加載聲明UIWebviewDelegate協議
聲明WebView
2.實現UIWebView
WebView = [[ UIWebView alloc] initWithFrame: CGRectMake(x,x,x,x )];
[ WebView setUserInteractionEnabled: YES ]; //是否支持交互
[ WebView setDelegate: self ]; //委托
[ WebView setOpaque: NO ]; //透明
[ self . view addSubview : WebView]; //加載到自己的view
url = [[ NSURL alloc ] initWithString :@"http:"];
[ WebView loadRequest:[ NSURLRequest requestWithURL: url ]]; //筆者習慣采用loadRequest方式,你可以采用其他方式
opaqueview = [[ UIView alloc] initWithFrame: CGRectMake(x , x , x , x )]; //opaqueview 需要在.h文件中進行聲明 用以做UIActivityIndicatorView的容器view;
activityIndicator = [[ UIActivityIndicatorView alloc] initWithFrame: CGRectMake( x , x , x , x )];//需要在.h文件中進行聲明
[ activityIndicator setCenter : opaqueview. center ];
[ activityIndicator setActivityIndicatorViewStyle: UIActivityIndicatorViewStyleWhite]; //顏色根據不同的界面自己調整
[ opaqueview setBackgroundColor:[ UIColor blackColor]];
[ opaqueview setAlpha: 0.6 ];
[ self . view addSubview : opaqueview];
[ opaqueview addSubview : activityIndicator];
接下來添加
- (void )webViewDidFinishLoad:(UIWebView *)webView {
[activityIndicator stopAnimating];
opaqueview.hidden = YES ;
}
- (void )webViewDidStartLoad:(UIWebView *)webView {
[ activityIndicator startAnimating ];
opaqueview.hidden = NO ;
}
這樣就簡單的實現了UIWebView控件的加載使用,不同的頁面均有加載的等待。
//.h文件 @interface ViewController : UIViewController<UIWebViewDelegate>{ IBOutlet UIWebView *webView; UIActivityIndicatorView *activityIndicatorView; UIView *opaqueview; } //.m文件 - (void)viewDidLoad { [superviewDidLoad]; webView = [[UIWebViewalloc] initWithFrame:CGRectMake(0, 44, 320, 440 )]; [webViewsetUserInteractionEnabled:YES]; //是否支持交互 [webView setDelegate:self]; //委托 [webView setOpaque:NO]; //Opaque為不透明的意思,這里為透明 [webView setScalesPageToFit:YES]; //自動縮放以適應屏幕 [self.view addSubview:webView]; //加載網頁的方式 //1.創建並加載遠程網頁 NSURL* url = [NSURLURLWithString:@"http://www.baidu.com"]; [webViewloadRequest:[NSURLRequestrequestWithURL:url]]; //2.加載本地文件資源 // NSURL *url = [NSURL fileURLWithPath:filePath]; //filePath為文件路徑 // NSURLRequest *request = [NSURLRequest requestWithURL:url]; // [webView loadRequest:request]; //3.讀入一個 HTML,直接寫入一個HTML代碼 // NSString *htmlPath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"webapp/loader.html"];//相當於文件地址 // NSString *htmlString = [NSString stringWithContentsOfFile: htmlPath encoding:NSUTF8StringEncoding error:NULL]; // [webView loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:htmlPath]]; opaqueview = [[UIViewalloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; //opaqueview 需要在.h文件中進行聲明用以做UIActivityIndicatorView的容器view; activityIndicatorView = [[UIActivityIndicatorViewalloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; [activityIndicatorView setCenter:opaqueview.center]; [ activityIndicatorView setActivityIndicatorViewStyle: UIActivityIndicatorViewStyleWhite]; //顏色根據不同的界面自己調整 [ opaqueview setBackgroundColor:[ UIColor blackColor]]; [ opaqueview setAlpha: 0.6 ]; [ self . view addSubview : opaqueview]; [ opaqueview addSubview : activityIndicatorView]; } //當網頁視圖已經開始加載一個請求之后得到通知 - (void) webViewDidStartLoad:(UIWebView *)webView { [activityIndicatorViewstartAnimating]; opaqueview.hidden = NO; } //當網頁視圖結束加載一個請求之后得到通知 - (void) webViewDidFinishLoad:(UIWebView *)webView{ [activityIndicatorViewstopAnimating]; //停止風火輪 opaqueview.hidden = YES; //隱藏 }