ios swift WKWebView (一)基本了解

苹果官方文档对WKWebView的解读,在iOS 8和OS X 10.10开始,使用WKWebView向应用程序添加Web内容。不要使用UIWebView或WebView。但是如果应用程序需要兼容更低版本,则建议还是使用UIWebView或WebView。

一个WKWebView对象显示交互式Web内容,例如一个应用程序的浏览器。你可以使用WKWebView类嵌入Web内容的应用程序。这样做,创造一个WKWebView对象,设置它为视角,并发送一个请求来加载网页内容。

代码实例,苹果官方文档:(苹果官方文档使用最新的swift版本swift3)

import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
    
    var webView: WKWebView!
    
    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        view = webView
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let myURL = URL(string: "https://www.apple.com")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }}

一下示例代码使用xcode7.3 swift2.2版本:

//
//  WKViewController.swift
//  WebviewTest
//
//  Created by Zzcz on 2017/3/13.
//  Copyright © 2017年 fly. All rights reserved.
//

import UIKit
import WebKit
class WKViewController: UIViewController,WKUIDelegate ,WKNavigationDelegate{

    var webView : WKWebView!
    var urlString = "https://www.apple.com"
    
    override func loadView() {
        let webConfiguratiojn = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguratiojn)
        webView.UIDelegate = self
        webView.navigationDelegate = self
        view = webView
        
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        let myURL = NSURL.init(string: urlString)
        let myRequest = NSURLRequest.init(URL: myURL!)
        webView.loadRequest(myRequest)
        
        
        // Do any additional setup after loading the view.
    }

}
对比UIWebView,WKWebView似乎更为强大,WKWebView允许用户通过网页历史前进后退、前进,用goback()和goforward()方法动作按钮。使用cangoback和cangoforward属性禁用的按钮时,用户不能在一个方向移动。
默认情况下,Web视图自动将Web内容中出现的电话号码转换为电话链接。当电话联系被窃听,手机APP的推出和拨号。关闭此默认行为,用WKDataDetectorTypes bitfield,不包含电话号码的旗帜datadetectortypes属性设置。
也可以使用setmagnification(_:centeredat:)以编程方式设置网页内容的第一次是一个Web视图显示比例。此后,用户可以改变规模使用手势。

WKWebView的常用属性或是WKWebView的视图信息

var scrollView: UIScrollView
The scroll view associated with the web view.//与Web视图关联的滚动视图。
var title: String?
The page title.//页面标题。
var url: URL?
The active URL.//活动网址。也可理解为网址链接
var customUserAgent: String?
The custom user agent string.//自定义用户代理字符串。
var serverTrust: SecTrust?
A SecTrustRef object for the currently committed navigation.//目前致力于导航的sectrustref对象。
var certificateChain: [Any]
An array of objects forming the certificate chain for the currently committed navigation.//为当前提交的导航形成证书链的对象数组。
WKWebView的代理:

        webView.UIDelegate = self//WKUIDelegate
        webView.navigationDelegate = self//WKNavigationDelegate
加载内容:

var estimatedProgress: Double//已加载当前导航的几分之一的估计值。

var hasOnlySecureContent: Bool// 一个布尔值,指示页面上的所有资源是否已通过安全加密连接加载。 


func loadHTMLString(String, baseURL: URL?)// 设置网页内容和基本网址。 


var isLoading: Bool// 一个布尔值,该值指示视图(WKWebView)是否正在加载内容。 


func reload()// 重新载入当前页面。 可以理解为刷新数据


func reloadFromOrigin()// 重新载入当前页面,进行端到端的验证使用缓存验证条件,如果可能的话。 


func stopLoading()// 停止加载当前页上的所有资源。 


func load(Data, mimeType: String, characterEncodingName: String, baseURL: URL)// 设置网页内容和基本网址。 


func loadFileURL(URL, allowingReadAccessTo: URL)// 导航到所请求的文件系统上的文件的URL 

缩放内容:(WKWebView的属性)

var allowsMagnification: Bool// 一个布尔值,指示是否放大手势会改变web视图的放大倍数。 


var magnification: CGFloat// 当前缩放页面内容的因素。 


func setMagnification(CGFloat, centeredAt: CGPoint)// 按指定的因子缩放页面内容,并将结果集中在指定的点上。理解为在某一点缩放内容 

导航:

var allowsBackForwardNavigationGestures: Bool// 一个布尔值,指示是否将触发水平滑动手势前进后退列表导航。 

var backForwardList: WKBackForwardList// Web视图的前向列表。 

var canGoBack: Bool// 一个布尔值,指示是否可以导航到前进后退列表有一回项目。 

var canGoForward: Bool// 一个布尔值,指示是否可以导航到后面转发列表有一个项目。 

var allowsLinkPreview: Bool// 一个布尔值,该值决定是否按下链接显示链接的目的地预览。 

func goBack()// 导航到后面的项目在后面转发列表。 

func goForward()// 导航到了项目中的反馈表。 

func go(to: WKBackForwardListItem)// 导航到一个项目从后向前列表并设置为当前项目。 

func load(URLRequest)// 导航到一个URL。加载网络地址

 执行JavaScript
func evaluateJavaScript(String, completionHandler: ((Any?, Error?) -> Void)? = nil)// 评估或是获得一个JavaScript字符串。 
实例方法:

func goBack(Any?)//导航到后面的项目在后面转发列表。

func goForward(Any?)//导航到了项目中的反馈表。

func reload(Any?)//重新载入当前页面。

func reloadFromOrigin(Any?)//重新载入当前页面,进行端到端的验证使用缓存验证条件,如果可能的话。

func stopLoading(Any?)//停止加载当前页上的所有资源。



你可能感兴趣的:(ios笔记,swift)