使用UIWebView我们要了解一些属性
1、 第一个属性Scales Page To Fit,Bool型,其默认值为false,用户不可以放大或缩小页面,如果设置为true,页面可以通过放大或缩小去适应,用户也可以通过手势来放大和缩小。
2、Data Detectors表示网页哪些内容可以自动变成可以点击的链接,分别有链接、地址、电话号码和事件。缺省情况下,电话号码是可以点击的。
有一个dataDetectorTypes的属性对应这个 探测类型,其类型是:UIDataDetectorTypes
3、最后一个Options,这是内容上的一些控件属性
Allows inline Playback 对应的属性是allowsinlineMediaPlayback,意义为这个值决定了用内嵌HTML5播放视频还是用本地的全屏控制。为了内嵌视频播放,不仅仅需要在这个页面上设置这个属性,还必须得是在HTML中的video元素必须包含webkit-playsinline属性。此属性是bool类型,弄人iPhone Safari值为false iPad Safari 默认为true。
PlayBack Requires User Action 选项对应Bool类型mediaPlaybackRequiresUserAction,意思是是否需要用户触发来启动媒体播放,无论是iPhone Safari还是iPad Safari 上,此默认值为true
Playback Allows AirPlay 选项对应Bool型属性mediaPlaybackAllowsAirPlay.这个值决定了从这个页面是否可以Air Play,省缺情况下iPhone Safari 和iPad safari值为true
Suppress incremental Rendering 选项对应suppressesIncrementalRendering属性,类型为Bool类型,意义是这个值决定了网页的渲染是否在把内容全部加载到内存中再去处理。如果设置为true,只有网页内容加载到内存里了才会渲染,缺省情况下iPhone safari和iPad Safari 值都是false
keyboard Display Requires User Action选项对应keyboardDisplayRequiresUserAction属性,类型为Bool类型,默认值为true。意思是如果设置为true,用户滴血明确地点击页面上的元素或者关联的输入页面来显示键盘;如果设置为false,一个元素的焦点事件导致输入视图的显示和自动关联这个元素。
4、属性paginationMode 则用于自动分页带有paginationMode网站。对于长页面,自动分页成小页面是非常有用。
除了上面的属性,对于UIWebView对象,可以有很多方法来控制其对内容的加载和处理。
方法
web.loadRequest(request: URLRequest)用于加载并显示指定URL对象所设定的网页,异步加载,可以从服务器和本地读取。
web.loadHTMLString(string: String, baseURL: URL?)则用于加载指定的HTML字符串
load(data: Data, mimeType: String, textEncodingName: String, baseURL: URL)也是用于加载指定的内容,分别设置主页面的内容、MIME类型、内容编码格式以及基准URL,不过比上一个函数loadHTMLString更加底层。
方法reload()代表刷新指令,重新加载此页面
方法stopLoading()表示加载过程中,可以强行停止。
方法goBack()用于控制在产生了多个链接浏览器是,可以返回至浏览器历史的上一个链接。
方法goForward()用于在产生了多个链接浏览是,可以前进至浏览器历史的下一链接。
同时UIWebView还包含delegate属性,可以获得加载流程中的控制
webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {}
在UIWebView将来开始加载指定的NSURLRequest对象所对应的网页时,回调该方法。
webViewDidStartLoad(_ webView: UIWebView) {} 在UIWebView开始加载之前,回调该方法。
webViewDidFinishLoad(_ webView: UIWebView) {} 在UIWebView加载完成之后,回到该方法。
webView(_ webView: UIWebView, didFailLoadWithError error: Error) {} 在UIWebView加载错误时调用此方法。
不同的加载内容调用不同的记载方法
在UIWebView 中显示HTML内容
let html = "<h1><a href='http://www.baidu.com'>百度</a></h1>"
web.loadHTMLString(html, baseURL: nil)
在UIWebView 中显示PDF内容
let path = Bundle.main.path(forResource: "文件名", ofType: "pdf")
let urlstr = URL.init(fileURLWithPath: path!)
web.loadRequest(URLRequest.init(url: urlstr))
在UIWebView 中显示PDF内容,但是通过loadData方法加载
let path = Bundle.main.path(forResource: "", ofType: "pdf")
let urlstr = URL.init(fileURLWithPath: path!)
let data = NSData.init(contentsOf: urlstr)
web.load(data as! Data, mimeType: "application/pdf", textEncodingName: "utf-8", baseURL: urlstr) 最后一个urlstr是一个
根url,自己可以改成其他的