• UIKit框架-高级控件Swift版本: 10.UIWebView方法/属性详解


    前面我们已经讲解完了 UINavigationController 的一些常用属性以及方法, 现在让我们来看看一个关于网络的 UIWebView.


    1.UIWebView的常用属性

    // 1.设置 UIWebView 的代理对象
    var delegate: UIWebViewDelegate?
    
    // 2.获取 UIWebView 的 UIScrollView 属性
    var scrollView: UIScrollView { get }
    
    // 3.获取 UIWebView 的网络请求
    var request: NSURLRequest? { get }
    
    // 4.获取 UIWebView 是否在接收数据的时候可以退后一步
    var canGoBack: Bool { get }
    
    // 5.获取 UIWebView 是否在接收数据的时候可以前进一步
    var canGoForward: Bool { get }
    
    // 6.获取 UIWebView 是否接受完数据
    var loading: Bool { get }
    
    // 7.设置 UIWebView 接收的数据是否可以通过手势来调整页面内容大小
    var scalesPageToFit: Bool
    
    // 8.设置 UIWebView 接收的数据是什么类型
    var dataDetectorTypes: UIDataDetectorTypes
    
    // 9.设置 UIWebView 内是否可以回放媒体
    var allowsInlineMediaPlayback: Bool
    
    // 10.设置 UIWebView 中的 HTML5 视频是否自动播放(默认是True)
    var mediaPlaybackRequiresUserAction: Bool
    
    // 11.设置 UIWebView 是否可以使用 Air 播放(默认是True)
    var mediaPlaybackAllowsAirPlay: Bool
    
    // 12.设置 UIWebView 是否使用同步加载(默认是False)
    var suppressesIncrementalRendering: Bool
    
    // 13.设置 UIWebView 在点击视图或者元素时是否显示键盘(默认是True)
    var keyboardDisplayRequiresUserAction: Bool
    
    // 14.设置 UIWebView 的分页模式
    var paginationMode: UIWebPaginationMode
    
    // 15.设置 UIWebView 的分页打破模式
    var paginationBreakingMode: UIWebPaginationBreakingMode
    
    // 16.设置 UIWebView 的分页长度
    var pageLength: CGFloat
    
    // 17.设置 UIWebView 之间的页面宽度
    var gapBetweenPages: CGFloat
    
    // 18.获取 UIWebView 的页面数量
    var pageCount: Int { get }

    常用类型

    // 1.获取 UIWebView 的数据类型
    struct UIDataDetectorTypes : RawOptionSetType {
        init(_ rawValue: UInt)
        init(rawValue: UInt)
    
        static var PhoneNumber: UIDataDetectorTypes { get }
        static var Link: UIDataDetectorTypes { get }
        static var Address: UIDataDetectorTypes { get }
        static var CalendarEvent: UIDataDetectorTypes { get }
        static var None: UIDataDetectorTypes { get }
        static var All: UIDataDetectorTypes { get }
    }
    
    // 2.设置 UIWebView 的 Navigation 类型
    enum UIWebViewNavigationType : Int {
        case LinkClicked
        case FormSubmitted
        case BackForward
        case Reload
        case FormResubmitted
        case Other
    }
    
    
    // 3.设置 UIWebView 的分页样式
    enum UIWebPaginationMode : Int {
        case Unpaginated
        case LeftToRight
        case TopToBottom
        case BottomToTop
        case RightToLeft
    }
    
    // 4.设置 UIWebView 打破分页样式的样式
    enum UIWebPaginationBreakingMode : Int {
        case Page
        case Column
    }

    2.UIWebView的代理方法

    // 1.该方法是用来设置是否在 UIWebView 加载之前发送一个请求
        optional func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool
    
    // 2.该方法是在 UIWebView 在开发加载时调用
        optional func webViewDidStartLoad(webView: UIWebView)
    
    // 3.该方法是在 UIWebView 加载完之后才调用
        optional func webViewDidFinishLoad(webView: UIWebView)
    
    // 4.该方法是在 UIWebView 请求失败的时候调用
        optional func webView(webView: UIWebView, didFailLoadWithError error: NSError)

    3.代码示范

    首先我们要使用storyBoard布局界面
    1

    关联控件
    2

    遵守代理协议

    class ViewController: UIViewController, UIWebViewDelegate {
    }

    自定义UIWebVIew

        func myWebView() {
    
            // 1.获取 UIWebView 的 UIScrollView 属性
            let webScroll = webView.scrollView
            println("webScroll = (webScroll)")
    
            // 2.获取 UIWebView 的 request 属性
            let webRequest = webView.request
            println("webRequest = (webRequest)")
    
            // 3.获取 UIWebView 是否在接收数据的时候可以退后一步
            let webCanBack = webView.canGoBack
            println("webCanBack = (webCanBack)")
    
            // 4.获取 UIWebView 是否在接收数据的时候可以前进一步
            let webCanGo = webView.canGoForward
            println("webCanGo = (webCanGo)")
    
            // 5.获取 UIWebVIew 是否接受完数据
            let webLoading = webView.loading
            println("webLoading = (webLoading)")
    
            // 6.设置 UIWebView 接收的数据是否可以通过手势来调整页面内容大小
            webView.scalesPageToFit = true
    
            // 7.设置 UIWebView 接收到得数据是什么类型的
            webView.dataDetectorTypes = UIDataDetectorTypes.All
    
            // 8.设置 UIWebView 内是否可以回放媒体
            webView.allowsInlineMediaPlayback = true
    
            // 9.设置 UIWebView 中的 HTML5 视频是否自动播放
            webView.mediaPlaybackRequiresUserAction = true
    
            // 10.设置 UIWebView 是否可以使用 Air 播放
            webView.mediaPlaybackAllowsAirPlay = true
    
            // 11.设置 UIWebView 是否使用同步加载(默认是False)
            webView.suppressesIncrementalRendering = false
    
            // 12.设置 UIWebView 在点击视图或者元素时是否显示键盘(默认是True)
            webView.keyboardDisplayRequiresUserAction = true
    
            // 13.设置 UIWebView 的分页模式
            webView.paginationMode = UIWebPaginationMode.RightToLeft
    
            // 14.设置 UIWebView 的分页打破模式
            webView.paginationBreakingMode = UIWebPaginationBreakingMode.Column
    
            // 15.设置 UIWebView 的分页长度
            webView.pageLength = 400
    
            // 16.设置 UIWebView 每个分页之间的宽度
            webView.gapBetweenPages = 100
    
            // 17.获取 UIWebView 的分页数量
            let webViewPageCount = webView.pageCount
            println(webViewPageCount)
    
            // 18.设置 UIWebView 的代理对象
            webView.delegate = self
    
            // 19.发送网络请求
            var url:NSURL = NSURL(string:"http://www.baidu.com")!
            var request:NSURLRequest = NSURLRequest(URL:url)
            webView.loadRequest(request)
        }

    实现代理方法

        // 1.该方法是用来设置是否在 UIWebView 加载之前发送一个请求
        func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
            return true
        }
    
        // 2.该方法是在 UIWebView 在开发加载时调用
        func webViewDidStartLoad(webView: UIWebView) {
            println("开始加载")
        }
    
        // 3.该方法是在 UIWebView 加载完之后才调用
        func webViewDidFinishLoad(webView: UIWebView) {
            println("加载完成")
        }
    
        // 4.该方法是在 UIWebView 请求失败的时候调用
        func webView(webView: UIWebView, didFailLoadWithError error: NSError) {
            println("加载失败")
        }
    

    在 ViewDidLoad 方法中实现

        override func viewDidLoad() {
            super.viewDidLoad()
            self.myWebView()
        }

    PS: UIWebView 继承与 UIView, 并且遵守了 UIScrollViewDelegate 协议, 所以它可以使用里面的方法和属性.


    好了, 这次我们就讲到这里, 下次我们继续~~

  • 相关阅读:
    2021-06-13 助教一周小结(第十九周)
    2021-06-06 助教一周小结(第十八周)
    2021-05-30 助教一周小结(第十七周)
    2021-05-23 助教一周小结(第十六周)
    2021-05-15 助教一周小结(第十五周)
    2021-05-09 助教一周小结(第十四周)
    个人总结-逆风方向,适合飞翔
    第二次结对作业
    结对作业
    随笔排版如何插入比较好看的样式。
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4529339.html
Copyright © 2020-2023  润新知