UIWebView 是内置的浏览器控件 ,可以用它来浏览网页,打开文档, 可以使用UIWebView类在自己的应用程序中嵌入web内容,为此,创建一个UIWebView对象将他附加到一个窗口,并将其发送请求加载web内容 ,你还可以使用这个类来推动没在网页的历史,甚至可以以编程的方式设置一些web内容属性
UIWebView 可以查看HTML网页,PDF文件,docx文件,TXT文件,MAC 系统自带的Safari就是UIWebView实现的
1,创建一个UIWebView
//创建WebView UIWebView *webView = [[UIWebView alloc] initWithFrame:[UIScreen mainScreen].bounds];
2.添加到view上
[self.view addSubview:webView];
- 加载内容
//加载内容 NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];//创建URL NSURLRequest *request = [NSURLRequest requestWithURL:url]; //创建URlRequest [webView loadRequest:request];//加载
到此为止 一个百度界面就可以加载出来了
- 实现代理方法
默认情况下,长按web页面中的链接,系统会自动呼出菜单提供open,copy和cancel选项,但如果要实现触击链接跳转至safari中打开页面该怎么做呢?UIWebViewDelegate协议中,包含
?
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
接口,如果为webView添加了delegate对象并实现该接口,那么在webView加载任何一个frame之前都会delegate对象的该方法,该方法的返回值用以控制是否允许加载目标链接页面的内容,返回YES将直接加载内容,NO则反之。并且UIWebViewNavigationType枚举,定义了页面中用户行为的分类,包括
UIWebViewNavigationTypeLinkClicked,用户触击了一个链接。
UIWebViewNavigationTypeFormSubmitted,用户提交了一个表单。
UIWebViewNavigationTypeBackForward,用户触击前进或返回按钮。
UIWebViewNavigationTypeReload,用户触击重新加载的按钮。
UIWebViewNavigationTypeFormResubmitted,用户重复提交表单
UIWebViewNavigationTypeOther,发生其它行为。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if ( navigationType == UIWebViewNavigationTypeLinkClicked ) { [[UIApplication sharedApplication] openURL:[request URL]]; return NO; } return YES; }
注意事项:
1.设置info.plist 网络请求字段App Transport Security Settings 若不设置是加载不上的
在iOS应用程序运行在8.0之后,使用WKWebView类,而不是使用UIWebView,此外 ,如果你的渲染文件不支持运行JavaScript ,就要把javascriptenabled 属性设置为NO
加载HTML文件:
使用loadHTMLString:baseURL: 方法 加载本地HTML文件或者 loadRequest: 方法开始加载web内容 使用
stopLoading 方法停止加载 ,加载性能,发现如果web视图实在加载过程中