花落√莫相思

29-Swift 之 UIWebView

2017-06-12  本文已影响927人  NetWork小贱

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

猜你喜欢

热点阅读