UIWebView用法詳解及代碼分享

今天我們來詳細UIWebView用法。UIWebView是iOS內置的瀏覽器控件,可以瀏覽網頁、打開文檔等 能夠加載html/htm、pdf、docx、txt等格式的文件.

創建UIWebView

首先創建UIWebView,這個不難,設置frame,然後添加到self.view上即可:

UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
webView.scalesPageToFit = YES;//自動對頁面進行縮放以適應屏幕
[self.view addSubview:webView];

UIWebView加載網絡地址

用UIWebView來加載網絡地址。代碼如下:

NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.superqq.com"]];
[self.view addSubview:webView];
[webView loadRequest:request];

UIWebView加載本地資源

通過NSURLRequest加載

NSString *path = [[NSBundle mainBundle] pathForResource:@"swift" ofType:@"html"];
NSURL* url = [NSURL   fileURLWithPath:path];//創建URL
NSURLRequest* request = [NSURLRequest requestWithURL:url];//創建NSURLRequest
[webView loadRequest:request];//加載

通過NSString加載

UIWebView 還支持將一個NSString對象作爲源來加載。你可以爲其提供一個基礎URL,來指導UIWebView對象如何跟隨鏈接和加載遠程資源:

NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSString *htmlString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
[webView loadHTMLString:htmlString baseURL:[NSURL URLWithString:path]];

自動檢測電話

設置這個屬性,如果在加載的網頁中遇到電話號碼,直接單擊就可以撥打,非常方便:

webView.dataDetectorTypes = UIDataDetectorTypePhoneNumber;//自動檢測網頁上的電話號碼,單擊可以撥打

設置代理和代理方法

UIWebView有五個代理方法,我們可以在不同的代理方法中,完成不同的需求。

//設置代理
webView.delegate = self;

//代理方法
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    //返回YES,進行加載。通過UIWebViewNavigationType可以得到請求發起的原因
    return YES;
}

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    //開始加載,可以加上風火輪(也叫菊花)
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    //完成加載
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    //加載出錯
}

創建加載他、停止、後退、前進按鈕

創建四個按鈕,分別是加載按鈕、停止按鈕、返回按鈕、前進按鈕:

NSArray *array = [NSArray arrayWithObjects:@"加載",@"停止",@"返回",@"前進", nil];
    int far = (SCREEN.width - 200)/5;
    for (int i = 0; i < array.count; i++) {
        UIButton *button = [[UIButton alloc] init];
        button.frame = CGRectMake( (i + 1) * far + 50 * i, SCREEN.height - 60, 50, 40);
        button.tag = 200 + i;
        [button addTarget:self action:@selector(actionClick:) forControlEvents:UIControlEventTouchUpInside];
        [button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
        [button setBackgroundColor:[UIColor orangeColor]];
        [button setTitle:array[i] forState:UIControlStateNormal];
        [self.view addSubview:button];
    }

前進後退

給四個按鈕綁定事件,根據tag值來區分每一個點擊事件:

- (void)actionClick:(UIButton *)button
{
    switch (button.tag) {
        case 200:
        {
            [self.webView reload];//加載
        }
            break;
        case 201:
        {
            [self.webView stopLoading];//停止加載
        }
            break;
        case 202:
        {
            [self.webView goBack];//返回
        }
            break;
        case 203:
        {
            [self.webView goForward];//前進
        }
            break;
        default:
            break;
    }
}


發佈了32 篇原創文章 · 獲贊 1 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章