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阅读 175,799评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,263评论 4 61
  • http://www.cnblogs.com/mddblog/p/5281748.html 一、整体介绍 UIWe...
    F麦子阅读 5,002评论 0 2
  • 昨天听了微信团队某早期成员关于“微信产品观”的分享,有一些收获,所以记录并发出来。这里记录的并不是全部分享内容,只...
    sarsbiker阅读 3,421评论 0 1
  • 晚霞泛着藕荷色的还带着点粉红的光晕,弥漫在天际。初夏的落日还没有那么大的威风,暂时还无法撕开这层迷人的面纱...
    哈尔滨王海军阅读 2,325评论 0 0