一、权限申请 IOS9+需要在info.plist中加入权限:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
二、初始化
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 20, self.view.bounds.size.width, self.view.bounds.size.height-20)];
// 加载网络地址
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];
// 适配屏幕
webView.scalesPageToFit = YES;
// 将 webView 添加到屏幕
[self.view addSubview:webView];
三、加载指定内容
// 加载指定 URL 所设定的内容
/*
异步加载,可以从服务器和本地读取
*/
// 加载网络数据
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];
// 加载本地文件
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Baidu" ofType:@"pdf"]]]];
// 加载 HTML 字符串数据
/*
指定 baseURL 可加载图片
*/
// 加载网络 HTML 字符串数据
NSString *htmlString1 = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"https://m.baidu.com/"] encoding:NSUTF8StringEncoding error:NULL];
[webView loadHTMLString:htmlString1 baseURL:[NSURL URLWithString:@"https://m.baidu.com/"]];
// 加载本地 HTML 字符串数据
NSString *htmlString2 = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Baidu" ofType:@"html"] encoding:NSUTF8StringEncoding error:NULL];
[webView loadHTMLString:htmlString2 baseURL:nil];
// 加载 Data 数据
/*
比 loadHTMLString 更底层
*/
NSData *data = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Baidu" ofType:@"html"]]];
[webView loadData:data MIMEType:@"text/html" textEncodingName:@"utf-8" baseURL:[NSURL URLWithString:@"https://m.baidu.com/"]];
四、设置自动分页
// 默认不分页
UIWebPaginationModeUnpaginated,
UIWebPaginationModeLeftToRight,
UIWebPaginationModeTopToBottom,
UIWebPaginationModeBottomToTop,
UIWebPaginationModeRightToLeft
webView.paginationMode = UIWebPaginationModeLeftToRight;
五、设置超链接类型
UIDataDetectorTypePhoneNumber = 1 << 0
UIDataDetectorTypeLink = 1 << 1
UIDataDetectorTypeAddress = 1 << 2
UIDataDetectorTypeCalendarEvent = 1 << 3
UIDataDetectorTypeNone =0
UIDataDetectorTypeAll =NSUIntegerMax
webView.dataDetectorTypes = UIDataDetectorTypeAll;
六、设置是否启动内置H5播放视频
webView.allowsInlineMediaPlayback = NO;
七、设置是否需要用户触发来启动媒体播放
webView.mediaPlaybackRequiresUserAction = NO;
八、设置本页面是否可以 AirPlay 播放
webView.mediaPlaybackAllowsAirPlay = YES;
九、设置是否把网页内容全部加载到内存中再去渲染
webView.suppressesIncrementalRendering = NO;
十、设置是否需要用户触发显示键盘
webView.keyboardDisplayRequiresUserAction = NO;
十一、操作设置
// 刷新
/*
重新加载页面
*/
[webView reload];
// 停止加载
/*
加载过程中,强行停止加载
*/
[webView stopLoading];
// 返回至上一个链接
/*
在产生多个链接浏览时,可以返回至浏览历史的上一个链接
*/
[webView goBack];
// 前进至下一个链接
/*
在产生多个链接浏览时,可以前进至浏览历史的下一个链接
*/
[webView goForward];
十二、协议
// 将要开始加载网页
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
return YES;
}
// 开始加载网页
- (void)webViewDidStartLoad:(UIWebView *)webView {
}
// 加载网页完成
- (void)webViewDidFinishLoad:(UIWebView *)webView {
}
// 加载网页失败
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
}