UIWebView(1)

一、UIWebView的一些官方提醒:

1、除了可以展示HTML外,还可以展示Keynote, PDF, Pages documents, 但是在官方提示,最好的展示富文本的方式是UITextView
文档:For the best rendering of plain and rich text in your app, however, you should use UITextView instead.
2、默认配置下,webview会自动将其上面的Number当做电话号码,当点击时,会自动打电话,可设置dataDetectorTypes 类型来关闭。
3、iOS6后,如果设置了restorationIdentifier,它试图保护其URL的历史,每个页面的缩放和滚动位置,当前正在看哪个页面的信息
4、不能将UIWebView or UITableView 嵌入 UIScrollView中,触摸事件会混乱
5、销毁UIWebView实例前,必须设置UIWebView委托nil。(UIWebView dealloc方法)(这里我在iOS10系统上并未发现内存泄漏,应该是以前版本存在的问题)
6、不建议创建其子类

二、某些属性:

1 1、allowsLinkPreview: Bool (iOS 9.0)是否允许预览链接 2 2、suppressesIncrementalRendering: Bool 是否等到内容完全加载到内存中再显示 3 3、keyboardDisplayRequiresUserAction: Bool 一个布尔值表示web内容是否能以编程方式显示键盘。 4 4、dataDetectorTypes: UIDataDetectorTypes 类型的数据转换为可点击的网址在web视图的内容。 5 媒体播放管理 6 5、allowsInlineMediaPlayback: Bool 是否允许h5在线播放或使用本机全屏控制器。 7 6、mediaPlaybackRequiresUserAction: Bool 是否HTML5视频可以自动或要求用户开始播放。 8 7、allowsPictureInPictureMediaPlayback: Bool 画中画 9 10 页面管理 11 8、paginationBreakingMode: UIWebPaginationBreakingMode 列或分页 12 9、paginationMode: UIWebPaginationMode 布局模式 居上下左右

三、UIWebViewDelegate

1 //页面加载之前调用,拦截加载,是否放行 2 optional public func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, 3 navigationType: UIWebViewNavigationType) -> Bool 4 //开始加载数据 5 optional public func webViewDidStartLoad(_ webView: UIWebView) 6 //加载完成 7 optional public func webViewDidFinishLoad(_ webView: UIWebView) 8 //加载失败 9 optional public func webView(_ webView: UIWebView, didFailLoadWithError error: Error)

四、使用

1 @IBOutlet weak var webView: MyWebView! 2 3 //设置url的缓存值(也可以不设置) 4 let cache = URLCache(memoryCapacity: 1024 * 1024 * 100, diskCapacity: 1024 * 1024 * 100, 5 diskPath: nil) 6 URLCache.shared = cache//全局替换 7 8 //设置webView 9 webView.delegate = self 10 if #available(iOS 9.0, *) { 11 webView.allowsLinkPreview = true 12 webView.allowsPictureInPictureMediaPlayback = true 13 } else { 14 LLog("iOS 系统版本小于 9.0") 15 } 16 webView.allowsInlineMediaPlayback = true 17 webView.scalesPageToFit = true//设置是否缩放到适合屏幕大小 18 19 //加载网络 20 func test1() { 21 guard let url = URL(string: "https://www.baidu.com") else { 22 return 23 } 24 let request = URLRequest(url: url) 25 webView.loadRequest(request) 26 } 27 //加载本地html字符串 28 func test2() { 29 let htmlStr = "<html><body><img src='test.png'></body></html>" 30 let path = Bundle.main.path(forResource: "test.png", ofType: nil)! 31 let url = URL.init(fileURLWithPath: path) 32 webView.loadHTMLString(htmlStr, baseURL: url) 33 } 34 //加载本地html 35 func test21() { 36 let path = Bundle.main.path(forResource: "test.html", ofType: nil)! 37 let url = URL(fileURLWithPath: path) 38 webView.loadRequest(URLRequest(url: url)) 39 } 40 41 //加载本地其他文件PDF 42 func test3() { 43 let path = Bundle.main.path(forResource: "testPDF.pdf", ofType: nil)! 44 let url = URL.init(fileURLWithPath: path) 45 webView.loadRequest(URLRequest(url: url)) 46 }

除了上面的加载方式外,还有一种加载二进制数据的方式,不太常用,列出:

open func load(_ data: Data, mimeType MIMEType: String, textEncodingName: String, baseURL: URL)

上面是UIWebView的基本使用,还有其他一些常用的属性,根据属性名字很容易知道他是干嘛的,这里就不过多解释,我们使用webview时,经常需要截取它的加载动作,例如网页调取相册等等,可以在代理方法里面截获,下一篇介绍

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )