一、UIWebView的介绍
UIWebView是一个网页加载控件,多用于加载HTML 文件。
二、UIWebView的属性和方法介绍
1、UIWebView的初始化
/**
UIWebView 的两种初始化
init
init ... frame...
*/
NetWorkWebView = UIWebView.init()
NetWorkWebView = UIWebView.init(frame: CGRect.init(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
2、设置网页的大小
/**
设置大小
*/
NetWorkWebView.frame = CGRect.init(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height)
3、UIWebView的代理
/**
UIWebView 的代理
*/
NetWorkWebView.delegate = self;
代理事件的函数
// TODO: 网页开始加载时候调用
func webViewDidStartLoad(_ webView: UIWebView) {
print("webViewDidStartLoad")
}
// MARK: 网页加载失败的时候调用
func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
print("didFailLoadWithError")
}
// MARK: 网页加载完成时候调用
func webViewDidFinishLoad(_ webView: UIWebView) {
print("webViewDidFinishLoad")
}
// TODO: 是网页发起请求前,询问是否可以发起请求
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
return true
}
4、UIWebView的加载
/**
加载网页
*/
// 连接加载
NetWorkWebView.loadRequest(URLRequest.init(url: URL.init(string: "https://www.baidu.com")!))
// HTML 加载
let htmlStr = Bundle.main.path(forResource: "ss", ofType: "html", inDirectory: nil)
NetWorkWebView.loadHTMLString(htmlStr!, baseURL: nil)
// DATA 数据形式加载
let data = try! Data.init(contentsOf: URL.init(fileURLWithPath: htmlStr!))
NetWorkWebView.load(data, mimeType: "text/html", textEncodingName: "utf-8", baseURL:Bundle.main.bundleURL)
5、设置网页使用屏幕大小和缩放
/**
让网页自动使用大小
*/
NetWorkWebView.sizeToFit()
NetWorkWebView.sizeThatFits(self.view.bounds.size)
/**
网页收缩适配
*/
NetWorkWebView.scalesPageToFit = true
6、UIWebVIew的内联播放器的设置
/**
是否使用内联播放器
*/
NetWorkWebView.allowsInlineMediaPlayback = true
/**
是否允许自动播放
*/
NetWorkWebView.mediaPlaybackRequiresUserAction = true
/**
设置是否将数据加载如内存后渲染界面
*/
NetWorkWebView.suppressesIncrementalRendering = true
/**
设置用户交互模式
*/
NetWorkWebView.keyboardDisplayRequiresUserAction = true
/**
设置音频播放是否支持ari play功能
*/
NetWorkWebView.mediaPlaybackAllowsAirPlay = true
7、UIWebView的超出View的大小后的显示
/**
IOS7 以后才可以使用的
超出WebView大小的View,展示形式
public enum UIWebPaginationMode : Int {
// 默认
case unpaginated
// 从左到右进行翻页
case leftToRight
// 从顶部到底部进行翻页
case topToBottom
// 从底部到顶部进行翻页
case bottomToTop
// 从右向左进行翻页
case rightToLeft
}
*/
NetWorkWebView.paginationMode = .bottomToTop
/**
设置翻页后,获取每一页的长度
*/
let pageWidth = NetWorkWebView.pageLength
print(pageWidth)
NetWorkWebView.pageLength = 100
/**
获取&设置 网页翻转页面之间的间距
*/
let gapWeb = NetWorkWebView.gapBetweenPages
print(gapWeb)
NetWorkWebView.gapBetweenPages = 20
/**
获取翻转的总页数
*/
let allCountPage = NetWorkWebView.pageCount
print(allCountPage)
/**
网页对于部分显示的样式
public enum UIWebPaginationBreakingMode : Int {
// 书页形式
case page
// 列表形式
case column
}
*/
NetWorkWebView.paginationBreakingMode = .page
8、网页的停止、前进、后退、重新加载
/**
重新加载
*/
func webLoad() {
NetWorkWebView.reload()
}
/**
停止加载
*/
func webStopLoad() {
NetWorkWebView.stopLoading()
}
/**
是否可以前进和后退
*/
func goAndBackWeb() {
// MARK :后退
if NetWorkWebView.canGoBack {
NetWorkWebView.goBack()
}
// MARK: 前进
if NetWorkWebView.canGoForward {
NetWorkWebView.goForward()
}
}
/**
判断网页是否正在加载
*/
func isLoadingWeb() -> Void {
let isLoading = NetWorkWebView.isLoading
print(isLoading)
}
9、 网页调用JS
/**
网页调用js
*/
func callJsWeb(jsStr:String) -> Void {
/**
获取网页的标题
*/
NetWorkWebView.stringByEvaluatingJavaScript(from: "document.title")
}
网友评论