ios學習之UIWebView網頁視圖(2)


轉載於愛德凡的百度空間,地址:http://hi.baidu.com/aidfan/item/34a720866b33cbcdef083d37

 

UIWebView 使用詳解

一.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; //隱藏
}

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM