一、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")
}