iOS开发之UIWebView(一)
2015-12-31 08:54
302 查看
UIWebView:
是iOS内置的浏览器控件,系统自带的Safar浏览器就是通过UIWebView实现的
它不但能加载远程的网页资源,还能加载绝大部分的常见文件,如:
html/htm、pdf、doc、ppt、txt、mp4等
UIWebView加载资源的方法:
UIWebView的常用属性和方法:
UIWebView在加载资源的时候,还可以设置代理来监听加载的过程, 成为UIWebView的代理,遵守UIWebViewDelegate协议,就能监听UIWebView的加载过程
下面具体使用上述的属性和方法,如下:
1.加载远程网络资源,含有回退、前进功能
2.加载本地资源
UIWebView的简单使用就介绍到这里。
是iOS内置的浏览器控件,系统自带的Safar浏览器就是通过UIWebView实现的
它不但能加载远程的网页资源,还能加载绝大部分的常见文件,如:
html/htm、pdf、doc、ppt、txt、mp4等
UIWebView加载资源的方法:
- (void)loadRequest:(NSURLRequest *)request;// 加载某个请求
UIWebView的常用属性和方法:
- (void)reload;// 重新加载(刷新) - (void)stopLoading;// 停止加载 - (void)goBack;// 回退 - (void)goForward;// 前进 // 需要进行检测的数据类型 @property (nonatomic) UIDataDetectorTypes dataDetectorTypes; // 是否能回退 @property (nonatomic, readonly, getter=canGoBack) BOOL canGoBack; // 是否能前进 @property (nonatomic, readonly, getter=canGoForward) BOOL canGoForward; // 是否正在加载 @property (nonatomic, readonly, getter=isLoading) BOOL loading; // 是否伸缩内容至适应屏幕当前尺寸 @property (nonatomic) BOOL scalesPageToFit;
UIWebView在加载资源的时候,还可以设置代理来监听加载的过程, 成为UIWebView的代理,遵守UIWebViewDelegate协议,就能监听UIWebView的加载过程
// 开始发送请求(加载数据)时调用这个方法 - (void)webViewDidStartLoad:(UIWebView *)webView; // 请求完毕(加载数据完毕)时调用这个方法 - (void)webViewDidFinishLoad:(UIWebView *)webView; // 请求错误时调用这个方法 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error; // UIWebView在发送请求之前,都会调用这个方法,如果返回NO,代表停止加载请求,返回YES,代表允许加载请求 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
下面具体使用上述的属性和方法,如下:
1.加载远程网络资源,含有回退、前进功能
/** * 加载远程网络资源 */ - (void)loadBaidu { // 使用webView加载远程资源 NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"]; NSURLRequest *reqeust = [NSURLRequest requestWithURL:url]; // 设置webView的代理 self.webView.delegate = self; // 加载资源 [self.webView loadRequest:reqeust]; // 默认回退、前进按钮不可点击 self.backItem.enabled = NO; self.forwardItem.enabled = NO; // 设置伸缩内容至屏幕尺寸 // self.webView.scalesPageToFit = NO; } #pragma mark - UIWebViewDelegate /** * webView在发生请求request之前,会调用该方法,询问是否可以加载该请求request,YES:可以加载,NO:不可以加载 */ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { return YES; } /** * 完成加载时调用 */ - (void)webViewDidFinishLoad:(UIWebView *)webView { NSLog(@"webViewDidFinishLoad---"); // 控制回退、前进按钮是否可以点击 self.backItem.enabled = [self.webView canGoBack]; self.forwardItem.enabled = [self.webView canGoForward]; } /** * 开始加载时调用 */ - (void)webViewDidStartLoad:(UIWebView *)webView { NSLog(@"webViewDidStartLoad---"); } /** * 加载出错时调用 */ - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { NSLog(@"didFailLoadWithError---"); } /** * 返回上一页面(上一个页面要存在) */ - (IBAction)forwardClick:(id)sender { [self.webView goForward]; } /** * 进入下一个页面(下一个页面要存在) */ - (IBAction)backCLick:(id)sender { [self.webView goBack]; }运行效果:(注意两个按钮都是可以使用的)
2.加载本地资源
/** * 加载本地其他资源,如html/htm、txt、doc等 */ - (void)loadLocal { // 加载本地资源的URL路径 NSURL *url = [[NSBundle mainBundle] URLForResource:@"华为编程规范.doc" withExtension:nil]; NSURLRequest *reqeust = [NSURLRequest requestWithURL:url]; // 设置webView的代理 self.webView.delegate = self; // 加载资源 [self.webView loadRequest:reqeust]; } #pragma mark - UIWebViewDelegate /** * webView在发生请求request之前,会调用该方法,询问是否可以加载该请求request,YES:可以加载,NO:不可以加载 */ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { return YES; } /** * 完成加载时调用 */ - (void)webViewDidFinishLoad:(UIWebView *)webView { NSLog(@"webViewDidFinishLoad---"); // 控制回退、前进按钮是否可以点击 self.backItem.enabled = [self.webView canGoBack]; self.forwardItem.enabled = [self.webView canGoForward]; } /** * 开始加载时调用 */ - (void)webViewDidStartLoad:(UIWebView *)webView { NSLog(@"webViewDidStartLoad---"); } /** * 加载出错时调用 */ - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { NSLog(@"didFailLoadWithError---"); }运行效果:
UIWebView的简单使用就介绍到这里。
相关文章推荐
- Android更改桌面应用程序launcher的两种方式
- Android自定义开关按钮
- Android TabLayout重设Tab点击事件
- Delicious Apples(多校联合训练) 分类: ACM 多校 201
- iOS 开发如何获取当前的应用版本号
- NSArry 常用方法...enumerateObjectsUsingBlock:
- Codeforces 461B - Appleman and Tree 树状DP
- iOS --- OpenGLES之着色器(shader)语法介绍
- Android_Training
- appcompat_v7 报错 完美解决
- PhotoShop批量生成App大小不同的Icon
- unity3d的下载与安装
- Unity自带GL详解
- system.new.dat一键解包工具,支持Android5.1
- Grub_blog
- Android 5.0(Lollipop)system.new.dat解包工具及方法
- Android HandleThread源码分析
- android中的Handler机制原理解析
- iOS YYYY和yyyy的区别
- Unity中3中坐标系