📅  最后修改于: 2023-12-03 15:30:25.123000             🧑  作者: Mango
WKNavigationActionPolicyAllow和WKWebpagePreferences都是iOS中的WebView组件WKWebView中的功能点。这篇文章将会介绍这两个功能点的详细内容。
WKNavigationActionPolicyAllow是WKNavigationDelegate中的一个枚举值属性,用于控制WebView是否可以加载一个URL请求。
enum WKNavigationActionPolicy : Int {
case cancel // 取消导航
case allow // 允许导航
}
在WebKit加载URL时,默认情况下会询问WKNavigationDelegate中的webView(_:decidePolicyFor:decisionHandler:)
方法,该方法返回一个WKNavigationActionPolicy枚举值,以控制URL是否可以加载。如果返回值是.allow
,URL请求会继续加载,否则,URL请求将会被取消。
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated {
decisionHandler(.cancel)
} else {
decisionHandler(.allow)
}
}
上面的代码片段是一个例子,判断了当前URL请求的类型,如果是一个链接在被单击时,则取消该导航。
WKWebpagePreferences用于设置WebView页面的一些偏好信息,包括页面的背景色、字体大小等等。
@available(iOS 14.0, *)
class WKWebpagePreferences : NSObject {
var preferredContentMode: WKWebpagePreferences.ContentMode
var prefersReducedMotion: Bool
var prefersContrastReducedTransparency: Bool
var ignoresViewportScaleLimits: Bool
}
在iOS 14.0及以上版本中,可以通过WKWebView.configuration.defaultWebpagePreferences
来获取一个默认的WKWebpagePreferences对象,并可以按需要修改其属性值。
if #available(iOS 14.0, *) {
let config = WKWebViewConfiguration()
let webpagePreferences = config.defaultWebpagePreferences!
webpagePreferences.preferredContentMode = .mobile
webpagePreferences.prefersReducedMotion = true
webView = WKWebView(frame: .zero, configuration: config)
}
上面的代码片段是一个更改WebView页面偏好信息的例子,将页面内容模式设置为移动端,并开启减少动态效果和透明度的降低对比度等设置。