今天我們來詳細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;
}
}