29-Swift 之 UIWebView

一、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")
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,441評論 25 708
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,246評論 4 61
  • http://www.cnblogs.com/mddblog/p/5281748.html 一、整體介紹 UIWe...
    F麥子閱讀 1,264評論 0 2
  • 昨天聽了微信團隊某早期成員關于“微信產品觀”的分享,有一些收獲,所以記錄并發出來。這里記錄的并不是全部分享內容,只...
    sarsbiker閱讀 519評論 0 1
  • 晚霞泛著藕荷色的還帶著點粉紅的光暈,彌漫在天際。初夏的落日還沒有那么大的威風,暫時還無法撕開這層迷人的面紗...
    哈爾濱王海軍閱讀 303評論 0 0