博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UIWebView
阅读量:7212 次
发布时间:2019-06-29

本文共 4374 字,大约阅读时间需要 14 分钟。

1、简介

  • UIWebView 控件是做网络应用开发时使用的最多的一个控件,它实现了内置的浏览器(类似于 Safari),并且 UIWebView 继承自 UIView,可以将其像其它控件一样应用到需要的位置。
  • 优点:简单,快速。
  • 缺点:内存消耗大,对于手机端的硬件支持不够好,例如:定位,捏合(传统互联网只有点击动作)。
  • 应用场景:
    • 适合于内容版式变化比较大的应用。
      • 网易新闻,各种图文混排,甚至嵌入视频。
      • 菜谱,各种图片搭配,图文并茂。
      • 运动类的应用:羽毛球,后场高远球,来一段视频,图解说明,分解动作...。
    • 有些公司,有网站,没有 iOS 应用,着急上架,可以先用 webView 快速包装一个。
      • 百度的一系列应用,去年年初才慢慢的转成 iOS 应用。
    • iPhone 手机的浏览器 Safari 就是用 UIWebView 控件开发的。
      • 微信内嵌的浏览器就是 UIWebView 控件
  • iOS 9+ 中若要加载 http: 网络,需要在 Info.plist 中添加 App Transport Security Settings -> key: Allow Arbitrary Loads,value: YES。

2、UIWebView 的创建

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 20, self.view.bounds.size.width, self.view.bounds.size.height-20)];// 将 webView 添加到屏幕[self.view addSubview:webView];// 加载网络地址[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];// 适配屏幕webView.scalesPageToFit = YES;

3、UIWebView 的设置

// 加载指定 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/"]];// 适配屏幕/*YES 页面可以通过放大和缩小去适应,用户也可以通过手势来放大和缩小*/webView.scalesPageToFit = YES;// 设置自动分页模式/*UIWebPaginationModeUnpaginated,   // 默认不分页UIWebPaginationModeLeftToRight,UIWebPaginationModeTopToBottom,UIWebPaginationModeBottomToTop,UIWebPaginationModeRightToLeft*/webView.paginationMode = UIWebPaginationModeLeftToRight;// 设置超链接类型/*UIDataDetectorTypePhoneNumber     = 1 << 0,          // Phone number detectionUIDataDetectorTypeLink            = 1 << 1,          // URL detectionUIDataDetectorTypeAddress         = 1 << 2,          // Street address detectionUIDataDetectorTypeCalendarEvent   = 1 << 3,          // Event detectionUIDataDetectorTypeNone            = 0,               // No detection at allUIDataDetectorTypeAll             = NSUIntegerMax    // All types*/webView.dataDetectorTypes = UIDataDetectorTypeAll;// 设置是否用内嵌 HTML5 播放视频/*内嵌播放 HTML 中的 video 元素必须包含 webkit-playsinline 属性YES 内嵌播放,NO 本地全屏控制,iPhone Safari defaults to NO. iPad Safari defaults to YES*/webView.allowsInlineMediaPlayback = NO;// 设置是否需要用户触发来启动媒体播放/*iPhone and iPad Safari both default to YES*/webView.mediaPlaybackRequiresUserAction = NO;// 设置本页面是否可以 AirPlay 播放/*iPhone and iPad Safari both default to YES*/webView.mediaPlaybackAllowsAirPlay = YES;// 设置是否把网页内容全部加载到内存中再去渲染/*iPhone and iPad Safari both default to NO*/webView.suppressesIncrementalRendering = NO;// 设置是否需要用户触发显示键盘/*default is YES*/webView.keyboardDisplayRequiresUserAction = NO;// 刷新/*重新加载页面*/[webView reload];// 停止加载/*加载过程中,强行停止加载*/[webView stopLoading]; // 返回至上一个链接/*在产生多个链接浏览时,可以返回至浏览历史的上一个链接*/[webView goBack];// 前进至下一个链接/*在产生多个链接浏览时,可以前进至浏览历史的下一个链接*/[webView goForward];// 设置代理,需遵守协议 
webView.delegate = self;

4、UIWebView 的协议方法

  • 需遵守协议 UIWebViewDelegate,并设置代理
// 将要开始加载网页- (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 {}

转载于:https://www.cnblogs.com/CH520/p/9413464.html

你可能感兴趣的文章
mod_rewrite
查看>>
qq硬盘 你就是神
查看>>
JQuery 中简单的几个 类选择器 使用方法
查看>>
694. Distinct Substrings (后缀数组)
查看>>
Python学习笔记(十)—— 高级特性
查看>>
Extensible Firmware Interface
查看>>
oracle约束的相关总结
查看>>
解决Eclipse java build path中Web App Libraries无法自动找到WEB-INF的lib目录
查看>>
使用XStream对Java对象进行序列化和反序列化
查看>>
AjaxPro使用说明
查看>>
poj 1180 斜率优化dp
查看>>
关于内存中栈和堆的区别[转]
查看>>
步步为营 .NET 代码重构学习笔记 十
查看>>
Sr Software Engineer - Big Data Team
查看>>
IntelliJ IDEA给Serializable类加上自动的serialVersionUID
查看>>
[C# 网络编程系列]专题四:自定义Web浏览器
查看>>
2013流行Python项目汇总
查看>>
TensorFlow (RNN)深度学习 双向LSTM(BiLSTM)+CRF 实现 sequence labeling 序列标注问题 源码下载...
查看>>
关于 Jason.NET 的质问
查看>>
《算法帝国》
查看>>