文章目录

  • 前言
  • 一、WKWebViewConfiguration是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.初始化
    • 3.Topics
    • 4. setURLSchemeHandler 方法使用
  • 总结

前言

随着UIWebView的时代结束,WKWebView作为高性能的替代者登上主角,需要将老项目的Web页面替换掉,开始学习使用WKWebView。本文就介绍了WKWebViewConfiguration的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、WKWebViewConfiguration是什么?

用来初始化WebView的属性集合。
使用WKWebViewConfiguration类,可以确定呈现网页的时间,处理媒体播放的方式,用户可以选择的项目的粒度以及许多其他选项;
WKWebViewConfiguration仅在首次初始化Web视图时使用。创建Web视图后,不能使用该类更改其配置

二、使用步骤

1.引入库

代码如下:

import WebKit

2.初始化

代码如下:

let webConfiguration = WKWebViewConfiguration()
let webView = WKWebView(frame: .zero, configuration: webConfiguration)

3.Topics

该处介绍相关属性和方法。

a .配置新的Web视图的属性

//用户代理字符串中使用的应用程序名称
var applicationNameForUserAgent: String?//[WKPreferences相关介绍](https://blog.csdn.net/meiyulong518/article/details/108740684)
//WebView要使用的首选项对象
var preferences: WKPreferences//从中获取视图的Web内容流程的进程池;初始化WebView时,将从指定的池中为其创建一个新的Web内容进程,或者使用该池中的现有进程
var processPool: WKProcessPool//用户内容控制器,用于与WebView关联,WKUserContentController对象为JavaScript提供了一种发布消息并将用户脚本注入Web视图的方法
var userContentController: WKUserContentController//WebView要使用的网站数据存储,如果WebView与非持久数据存储关联,则不会将任何数据写入文件系统。此属性在Web视图中实现私人浏览;
//WKWebsiteDataStore对象代表所选网站使用的各种类型的数据。数据类型包括cookie,磁盘和内存缓存以及持久数据,例如WebSQL,IndexedDB数据库和本地存储
var websiteDataStore: WKWebsiteDataStore// 确定WKWebView对象是否应始终允许缩放网页
//将此属性设置为TRUE可以缩放网页,而不考虑作者的意图。 ignoresViewportScaleLimits属性将覆盖网页中用户可缩放的HTML属性。默认为FALSE。
var ignoresViewportScaleLimits: Bool// WebView是否抑制内容渲染,直到将其完全加载到内存中为止
// The default value is false
var suppressesIncrementalRendering: Bool//---------媒体播放首选项-------// 您必须设置此属性才能播放嵌入式视频。 将此属性设置为true可以内联播放视频。 将此属性设置为false可以使用本机全屏控制器。 在iPhone上的HTML文档中添加视频元素时,还必须包含playsinline属性
//The default value for iPhone is false and the default value for iPad is true
//在iOS 10.0之前创建的应用必须使用webkit-playsinline属性
var allowsInlineMediaPlayback: Bool// 是否允许AirPlay The default value is true (隔空播放)
var allowsAirPlayForMediaPlayback: Bool// HTML5视频是否可以画中画 The default value is true
var allowsPictureInPictureMediaPlayback: Bool// 确定哪些媒体类型需要用户手势才能开始播放
// static var all: WKAudiovisualMediaTypes
// All media types require a user gesture to begin playing.
// static var audio: WKAudiovisualMediaTypes
// Media types containing audio require a user gesture to begin playing.
// static var video: WKAudiovisualMediaTypes
// Media types containing video require a user gesture to begin playing
// 使用WKAudiovisualMediaTypeNone表示不需要用户手势即可开始播放媒体
var mediaTypesRequiringUserActionForPlayback: WKAudiovisualMediaTypes//---------Setting Selection Granularity 设置选择粒度 -------// 用户可以在Web视图中以交互方式选择内容的粒度级别
// enum WKSelectionGranularity : Int
// case character 选择端点可以放置在任何字符边界
// case dynamic 选择粒度根据选择自动变化
//The default value is WKSelectionGranularity.dynamic
// 当指定WKSelectionGranularityDynamic并且选择在单个块内时,粒度可以是单个字符。 当指定了WKSelectionGranularityDynamic并且选择不限于单个块时,粒度可以是单个块
var selectionGranularity: WKSelectionGranularity// -------------- Selecting User Interface Directionality选择用户界面方向 -----------//用户界面元素的方向性
//The default value is WKUserInterfaceDirectionPolicy.content
var userInterfaceDirectionPolicy: WKUserInterfaceDirectionPolicy// 指定dataDetectoryTypes值会向与该值匹配的Web内容添加交互性。 例如,如果dataDetectorTypes属性设置为WKDataDetectorTypeLink,则Safari在文本“ Visit apple.com”中向“ apple.com”添加链接。
// The default value is none
// struct WKDataDetectorTypes
// phoneNumber、link、address、calendarEvent、trackingNumber、flightNumber、 lookupSuggestion、all
var dataDetectorTypes: WKDataDetectorTypes// ------------ Adding Handlers for New URL Schemes -------//每个URL scheme只能有一个handler。 如果为无效的URL scheme注册处理程序,或者为URL scheme注册处理程序多次,或者为WebKit已经处理的URL scheme注册处理程序,则会引发异常。 您可以调用handlesURLScheme(_ :)方法来确定WebKit是否处理特定的URL scheme。URL scheme不区分大小写。 有效的URL方案必须以ASCII字母开头,并且只能包含ASCII字母,数字,“ +”字符,“-”字符和“。”。 字符。// WebKit不知道如何使用URL方案加载资源的协议。
// WKURLSchemeHandler : NSObjectProtocol
//- (void)webView:(WKWebView *)webView startURLSchemeTask:(id <WKURLSchemeTask>)urlSchemeTask;
//- (void)webView:(WKWebView *)webView stopURLSchemeTask:(id <WKURLSchemeTask>)urlSchemeTask;
func setURLSchemeHandler(WKURLSchemeHandler?, forURLScheme: String)// 返回URLScheme当前注册的SchemeHandler
func urlSchemeHandler(forURLScheme: String) -> WKURLSchemeHandler?// WKWebpagePreferences对象是一系列属性的集合,
// 确定在加载和呈现页面时要使用的首选项。
@available(iOS 13.0, *)
var defaultWebpagePreferences: WKWebpagePreferences!//限制导航到应用程序绑定域
@available(iOS 14.0, *)
var limitsNavigationsToAppBoundDomains: Bool

4. setURLSchemeHandler 方法使用

// 自定义的拦截处理 实现WKURLSchemeHandler协议
class CustomURLSchemeHandler : NSObject, WKURLSchemeHandler {override init() {    }func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask) {print(urlSchemeTask.description)}func webView(_ webView: WKWebView, stop urlSchemeTask: WKURLSchemeTask) {print(urlSchemeTask.description)}
}// 使用
let webConfiguration = WKWebViewConfiguration()
webConfiguration.setURLSchemeHandler(CustomURLSchemeHandler(), forURLScheme: "customSecheme")let webView = WKWebView(frame: .zero, configuration: webConfiguration)
self.view = webView
let url = URL(string: "customSecheme://www.XXXXX.com")
let request = URLRequest(url: url!)
webView.load(request)

总结

以上就是今天要讲的内容,本文仅仅简单介绍了WKWebViewConfiguration的属性和方法介绍使用,之后会继续加入WKWebsiteDataStore、WKUserContentController等设计到的类。

iOS WKWebViewConfiguration相关推荐

  1. iOS与JS交互的4种方法

    iOS与JS交互的方法: 1.拦截url(适用于UIWebView和WKWebView) 2.JavaScriptCore(只适用于UIWebView,iOS7+) 3.WKScriptMessage ...

  2. iOS 走近商城 APP(三 WKWebView 商品规格选择框架封装)

    原文链接:http://www.jianshu.com/p/293ee1bfe104 商城 -- 由 3033 分享 开篇 忽然发现最近也只有值班才能写东西了,中间更新了两篇其他的断了下商城相关的文章 ...

  3. iOS下JS与OC互相调用(二)--WKWebView 拦截URL

    在上篇文章中讲述了使用UIWebView拦截URL的方式来处理JS与OC交互. 由于UIWebView比较耗内存,性能上不太好,而苹果在iOS 8中推出了WKWebView. 同样的用WKWebVie ...

  4. WKWebView 实现iOS与H5的交互转

    在iOS开发中,H5的嵌入可以通过UIWebView或者WKWebView.这两个都是继承UIView,来加载web数据的类.UIWebView是在iOS2的时候开始使用的.特点是加载速度慢,占用内存 ...

  5. iOS内实现h5原生开发

    介绍 Xcode可以直接引入h5的界面,实现原生界面内嵌h5开发.其实这里不止iOS可以这样做,安卓也可以引用同样的h5界面,实现界面使用同一份h5代码. 为什么要写h5的界面呢,原因是第一Xcode ...

  6. iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge

    2019独角兽企业重金招聘Python工程师标准>>> iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge 转载:原地址 ht ...

  7. IOS XCode11开发嵌入网页

    IOS XCode11开发嵌入网页的APP 初学IOS开发,一开始学习的是Swift和SWiftUI,对于之前的Objective-C开发没有了解. 在网上浏览一下,知道有WKWebView可以嵌入网 ...

  8. ios加载本地游戏html,使用WKWebView iOS加载本地HTML / Javascript

    我尝试在WKWebView上使用javascript加载本地HTML游戏.虽然我可以看到由CSS设计的HTML页面,但我听不到游戏的任何声音和一些游戏的动作不对应. 我注意到,如果我通过http直播服 ...

  9. ip访问 webstorem_常见问题-iOS WebView IP直连 如何处理 Cookie

    WKWebView 无法使用 NSURLProtocol 拦截请求 针对该问题方案如下: 换用 UIWebView 使用私有 API 进行注册拦截 换用 UIWebView 方案不做赘述,说明下使用私 ...

最新文章

  1. ethereumjs/ethereumjs-vm-2-API文档
  2. R语言dataframe数据列格式转换(从整型integer转化为浮点型float)
  3. 堆(heap)与栈(stack)的区别(二)
  4. 多元分布和狄利克雷分布
  5. 华三实现vlan通过
  6. 国考最热岗位报录比20602:1?还是数据库知识挑战赛适合我
  7. django 1.8 官方文档翻译: 8-3 点击劫持保护
  8. linux ibus中文,Ubuntu 14.10系统中IBUS 中文输入法安装的图文教程
  9. mysql 子查询 博客_mysql——多表——子查询——示例
  10. 干支纪年法简便算法_基于回弹法的混凝土实体质量过程控制研究
  11. 超市微信小程序怎么做_小程序怎么做的 超市微信小程序怎么做
  12. 解决AndroidStudio报错问题:Missing essential plugin
  13. 解析损失函数、代价函数、目标函数
  14. 通讯录AddressBook
  15. BigDecimal 比较大小
  16. Arduino 中String 与char *,char[]之间赋值
  17. 解决java.lang.ClassNotFoundException: org.hibernate.annotations.Entity问题
  18. 华为ENSP简单实训,仅为学习
  19. SpringBoot Tomcat 配置https 且443端口也是https(若依为例对接微信小程序的https,小程序也可以访问)
  20. html5怎么设置表单居中显示图片,如何将html5中的图片设置居中?图片居中的代码!...

热门文章

  1. 16天记住7000考研单词9-16天
  2. 【附源码】Java计算机毕业设计小区宠物管理系统(程序+LW+部署)
  3. 趣文:编程语言伪简史
  4. opencv4.5.5+qt5.15.2+vtk9.1+mingw81_64编译记录
  5. JavaWeb04----验证码登录新闻增加
  6. apple pencil值不值得购买,平板用的触控笔什么牌子好
  7. Glide获取网络图片宽和高
  8. 云GIS+数字孪生+微服务”技术的二三维一体化地理信息平台
  9. 硬件运维实习心得3000字
  10. java如何创建一个dao类_java – 如何设计一个DAO类?