要保存WKWebView的显示状态,可以通过以下步骤进行操作:
1.在你的视图控制器中声明一个WKWebView实例变量:
var webView: WKWebView!
2.在视图控制器的viewDidLoad
方法中,初始化WKWebView并添加到视图中:
webView = WKWebView(frame: view.bounds)
view.addSubview(webView)
3.在视图控制器的viewWillAppear
方法中,加载之前保存的状态:
if let data = UserDefaults.standard.data(forKey: "webViewState"),
let webViewState = try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? Data {
webView.restore(from: webViewState)
}
4.在视图控制器的viewWillDisappear
方法中,保存当前的WKWebView状态:
webView.saveState { (webViewState, error) in
if let error = error {
print("Failed to save web view state: \(error)")
} else if let webViewState = webViewState {
let data = try? NSKeyedArchiver.archivedData(withRootObject: webViewState, requiringSecureCoding: false)
UserDefaults.standard.set(data, forKey: "webViewState")
}
}
这样,当你的视图控制器被展示或者消失时,WKWebView的显示状态就会被保存和恢复。
注意:在iOS 13及以上版本,WKWebView的saveState
和restore(from:)
方法已经被废弃,可以使用webView.configuration.websiteDataStore.httpCookieStore.getAllCookies
获取cookie信息,并在恢复时将其设置回去。