WKWebView

显示交互式Web内容的对象,例如应用程序内浏览器。

class WKWebView : UIView
class WKWebView : NSView

###总览

重要,从iOS 8.0和OS X 10.10开始,使用WKWebView将Web内容添加到您的应用程序。不要使用UIWebView或WebView。

您可以使用该类在您的应用程序中嵌入Web内容。为此,创建一个对象,将其设置为视图,并向其发送加载Web内容的请求。WKWebViewWKWebView

注意,您可以POST使用中的内容发出请求。httpBodyWKWebView

使用该方法创建新对象后,需要加载Web内容。使用该方法开始加载本地HTML文件,或者使用该方法开始加载Web内容。使用方法停止加载,使用属性来确定Web视图是否正在加载。将委托属性设置为符合协议的对象,以跟踪Web内容的加载。有关以编程方式创建的示例,请参见清单1。WKWebViewinit(frame:configuration:)loadHTMLString(:baseURL:)load(:)stopLoading()isLoadingWKUIDelegateWKWebView

清单1 以编程方式创建WKWebView

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)
    }}

要允许用户在网页历史记录中来回移动,请使用和方法作为按钮的操作。当用户无法向某个方向移动时,请使用和属性禁用按钮。

  • goBack()
  • goForward()
  • canGoBackcanGoForward

默认情况下,Web视图会自动将显示在Web内容中的电话号码转换为“电话”链接。轻按“电话”链接后,“电话”应用将启动并拨打该号码。若要关闭此默认行为,请使用不包含该标志的位域设置该属性。dataDetectorTypesWKDataDetectorTypesphoneNumber

您还可以使用来以编程方式设置Web内容在首次显示在Web视图中时的缩放比例。此后,用户可以使用手势来更改比例。setMagnification(_:centeredAt:)


主题


确定WebKit是否可以加载内容

1、class func handlesURLScheme(String) -> Bool
返回WebKit是否本机支持使用特定URL方案加载资源。


初始化Web视图

2、var configuration: WKWebViewConfiguration
用于初始化Web视图的配置副本。
3、init(frame: CGRect, configuration: WKWebViewConfiguration)
返回使用指定框架和配置初始化的Web视图。
4、init?(coder: NSCoder)
检查视图信息
5、var scrollView: UIScrollView
与Web视图关联的滚动视图。
6、var title: String?
页面标题。
7、var url: URL?
活动URL。
8、var customUserAgent: String?
定制用户代理字符串。
9、var serverTrust: SecTrust?
当前提交的导航的SecTrustRef对象。
10、var certificateChain: [Any]
组成用于当前提交的导航的证书链的对象数组。
不推荐使用


设置delegate

11、var navigationDelegate: WKNavigationDelegate?
Web视图的导航委托。
12、var uiDelegate: WKUIDelegate?
Web视图的用户界面委托。


载入内容

13、var estimatedProgress: Double
估计当前导航中已加载的部分。

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

15、func loadHTMLString(String, baseURL: URL?) -> WKNavigation?
设置网页内容和基本URL。

16、var isLoading: Bool
一个布尔值,指示视图当前是否正在加载内容。

17、func reload() -> WKNavigation?
重新加载当前页面。

18、func reload(Any?)
重新加载当前页面。

19、func reloadFromOrigin() -> WKNavigation?
重新加载当前页面,并在可能的情况下使用缓存验证条件进行端到端重新验证。

20、func reloadFromOrigin(Any?)
重新加载当前页面,并在可能的情况下使用缓存验证条件进行端到端重新验证。

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

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

23、func load(Data, mimeType: String, characterEncodingName: String, baseURL: URL) -> WKNavigation?
设置网页内容和基本URL。

24、func loadFileURL(URL, allowingReadAccessTo: URL) -> WKNavigation?
导航到文件系统上的请求文件URL


缩放内容

25、var allowsMagnification: Bool
一个布尔值,指示放大的手势是否会更改Web视图的放大率。

26、var magnification: CGFloat
当前页面内容缩放的因子。

27、func setMagnification(CGFloat, centeredAt: CGPoint)
按指定的比例缩放页面内容,并将结果集中在指定的点上。


导航

28、var allowsBackForwardNavigationGestures: Bool
一个布尔值,指示水平滑动手势是否会触发后退列表导航。
29、var backForwardList: WKBackForwardList
Web视图的后退列表。
30、var canGoBack: Bool
一个布尔值,指示后向列表中是否有可以导航到的后一项。
31、var canGoForward: Bool
一个布尔值,指示后向列表中是否有可以导航到的前向项目。
32、var allowsLinkPreview: Bool
一个布尔值,该值确定按下链接是否显示链接目标的预览。
33、func goBack() -> WKNavigation?
导航到后退列表中的后一项。
34、func goBack(Any?)
导航到后退列表中的后一项。
35、func goForward() -> WKNavigation?
导航到后退列表中的前一项。
36、func goForward(Any?)
导航到后退列表中的前一项。
37、func go(to: WKBackForwardListItem) -> WKNavigation?
从后退列表导航到一个项目,并将其设置为当前项目。
38、func load(URLRequest) -> WKNavigation?
导航到请求的URL。


执行JavaScript

39、func evaluateJavaScript(String, completionHandler: ((Any?, Error?) -> Void)?)
评估一个JavaScript字符串。


拍摄快照

40、func takeSnapshot(with: WKSnapshotConfiguration?, completionHandler: (UIImage?, Error?) -> Void)
拍摄视图的可见视口的快照。


实例属性

41、var mediaType: String?
42、var pageZoom: CGFloat


实例方法

43、func callAsyncJavaScript(String, arguments: [String : Any], in: WKFrameInfo?, in: WKContentWorld, completionHandler: ((Result<Any, Error>) -> Void)?)

44、func createPDF(configuration: WKPDFConfiguration, completionHandler: (Result<Data, Error>) -> Void)

45、func createWebArchiveData(completionHandler: (Result<Data, Error>) -> Void)

46、func evaluateJavaScript(String, in: WKFrameInfo?, in: WKContentWorld, completionHandler: ((Result<Any, Error>) -> Void)?)

47、func find(String, configuration: WKFindConfiguration, completionHandler: (WKFindResult) -> Void)

48、func printOperation(with: NSPrintInfo) -> NSPrintOperation