美文网首页花落√莫相思
29-Swift 之 UIWebView

29-Swift 之 UIWebView

作者: NetWork小贱 | 来源:发表于2017-06-12 16:26 被阅读927次

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

    相关文章

      网友评论

        本文标题:29-Swift 之 UIWebView

        本文链接:https://www.haomeiwen.com/subject/bjilqxtx.html