网络视图UIwebView

(一)概述:一般是加载网页用的。同时,一些第三方登陆给的接口/回调 地址也需要通过webView和代理来实现授权。但是毕竟是网络视图,和原生控件比起来,速度慢了不是一点半点。甚至会有明显的卡顿。在XCODE中可以调用js语言来修改网页内容。

(二)白名单:随着ios9和xcode7的出现,在有关网络开发的应用都会默认采用https传输。所以一般要设置白名单。在info.plist中,直接用xml打开写入即可。

    <key>NSAppTransportSecurity</key>
    <dict>
        <!--Include to allow all connections (DANGER)-->
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

(三)通过网络请求加载webView

webView.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.baidu.com")!))

(四)通过HTML字符串加载webView:大部分的网页语言都是HTML写的,有了这个,使加载本地的网页文件成为可能。不要写好htmleString。然后loadHTML即可。

(五)通过NSData数据加载webView:通过NSData是三种方法里最灵活的。使用这种方法不再限定数据格式。因此,gif等展示也使用这种方式。(PS:YYIMage是这么做的吗?)

这时候拿到一个NSData,用webView loadData即可。

    public func loadRequest(request: NSURLRequest)
    public func loadHTMLString(string: String, baseURL: NSURL?)
    public func loadData(data: NSData, MIMEType: String, textEncodingName: String, baseURL: NSURL)

(六)常用方法:

  
        public func reload() // 重新加载
        public func stopLoading() // 停止加载
        public func goBack() // 如果有上一界面,退回
        public func goForward() // 如果有上一界面,前进
        public var canGoBack: Bool { get } // 判断可以回退
        public var canGoForward: Bool { get } // 判断可以倩姐
        public var loading: Bool { get } // 是否在loading
        public var scalesPageToFit: Bool // 设置界面的尺寸是否适配UIWebView
        public var dataDetectorTypes: UIDataDetectorTypes // 探测网页一些字段,假如探测出是电话号码,单击直接跳转打电话界面

探测枚举:支持位运算 |进行多选

 public struct UIDataDetectorTypes : OptionSetType {
        public init(rawValue: UInt)
        
        public static var PhoneNumber: UIDataDetectorTypes { get } // Phone number detection 探测电话
        public static var Link: UIDataDetectorTypes { get } // URL detection 探测网页链接
        @available(iOS 4.0, *)
        public static var Address: UIDataDetectorTypes { get } // Street address detection 探测地址
        @available(iOS 4.0, *)
        public static var CalendarEvent: UIDataDetectorTypes { get } // Event detection 探测日历
        
        public static var None: UIDataDetectorTypes { get } // No detection at all 不探测
        public static var All: UIDataDetectorTypes { get } // All types 探测所有
    }

(七)代理方法:回调方法可以返回当前网络视图的状态

    public protocol UIWebViewDelegate : NSObjectProtocol {
        
        @available(iOS 2.0, *)
        optional public func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool // 将要加载请求时
        @available(iOS 2.0, *)
        optional public func webViewDidStartLoad(webView: UIWebView) // 已经开始加载
        @available(iOS 2.0, *)
        optional public func webViewDidFinishLoad(webView: UIWebView) // 加载结束
        @available(iOS 2.0, *)
        optional public func webView(webView: UIWebView, didFailLoadWithError error: NSError?) // 加载失败
    }

其中,第三方加载都会在将要加载请求中拿到 code码,BOOL是真则返回回调页,假则不回调。

 

posted @ 2016-09-01 14:30  三更小新  阅读(235)  评论(0编辑  收藏  举报