美文网首页iOS编程IOS开发
WKWebView - WKWebViewConfigurati

WKWebView - WKWebViewConfigurati

作者: edison0428 | 来源:发表于2018-11-12 18:09 被阅读72次

WKWebViewConfiguration您可以确定网页呈现的时间,如何处理媒体回放等其他

只有在初始化WKWebView的时候设置configuration,并不能在WKWebView创建后去修改configuration

用于初始化WKWebView的配置

1.WKWebViewConfiguration
1.1 applicationsNameForUserAgent

用户代理字符串中使用的应用程序的名称
具体什么意思不是很明白

NSString * baseAgent = _webView.configuration.applicationNameForUserAgent;
NSLog(@"baseAgent=%@",baseAgent);
1.2 preferences
@property(nonatomic, strong) WKPreferences *preferences;
  • minimumFontSize
    最小字体大小,默认的为0就是h5是多少就显示多大

  • tabFocusesLinks
    不太明白,官网也没解释

  • javaEnabled
    是否启用java,默认是NO

  • javaScriptEnabled
    是否启用javaScript,默认是YES
    默认值为“是”。将此属性设置为“否”,禁用由网页加载或执行的JavaScript。此设置不会影响用户脚本

  • javaScriptCanOpenWindowsAutomatically
    一个布尔值,表示JavaScript是否可以在没有用户交互的情况下打开窗口
    默认值为iOS中的NO,MAC OS中为YES。

  • plugInsEnabled
    指示是否启用插件的布尔值
    默认是NO
    不太懂这个启用插件是什么意思

1.3 processPool

从中获取视图的Web内容处理的进程池

@property(nonatomic, strong) WKProcessPool *processPool

好像没什么内容

1.4 userContentController

与Web视图关联的用户内容控制器
它提供了方法给JavaScript去发消息以及给webview注入js代码

  • 1.4.1 addScriptMessageHandler:name:
    添加js方法处理,js调用原生就用这个
    参数1:消息的处理者(self,用self会导致循环引用,但是这里我们先这么写)
    参数2:消息名
[_contentController addScriptMessageHandler:delegateController name:name];

js消息触发会进入webkit的回调

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message{
    
    NSLog(@"name:%@\\\\n body:%@\\\\n frameInfo:%@\\\\n",message.name,message.body,message.frameInfo);
    if ([message.name isEqualToString:@"toProfile"]) {
        // [self ShareWithInformation:message.body];
        NSLog(@"点击去完善");
    }
}

js的代码如下

window.webkit.messageHandlers.JS_Function_Name.postMessage({body: 'paramters'});
  • 1.4.2 addUserScript:
    添加需要执行的js代码
    WKUserScript

  • 1.4.3 removeAllUserScripts
    移除所有关联的用户脚本

  • 1.4.4 removeScriptMessageHandlerForName:

删除脚本消息处理程序
跟 1.4.1 addScriptMessageHandler:name:一个是添加一个是删除

  • 1.4.5 userScripts
@property(nonatomic, readonly, copy) NSArray<WKUserScript *> *userScripts;

与用户内容控制器相关联的用户脚本,是个数组

  • 1.4.6 WKContentRuleList
    暂时没用到,不太会
1.5 websiteDataStore
1.6 ignoresViewportScaleLimits

一个布尔值决定是否应该被允许wkwebview对象总是允许被缩放
默认值为NO,不允许缩放
将此属性设置为true允许网页缩放,而不考虑h5作者的意图。这个属性覆盖网页中的用户可伸缩HTML属性。

1.7 suppressesIncrementalRendering

一个布尔值,该值指示Web视图是否在完全加载到内存中之前抑制内容呈现
默认是no

1.8 allowsInlineMediaPlayback

一个布尔值,指示HTML5视频是否在线播放或使用本机全屏控制器
iPhone的默认值为false,iPad的默认值为true

这个值决定了用内嵌HTML5播放视频还是用本地的全屏控制,为了内嵌视频播放,不仅仅需要在这个页面上设置这个属性,还必须的是在HTML中的video元素必须包含webkit-playsinline属性
将此属性设置为true,内嵌播放视频。将此属性设置为false以使用本机全屏控制器

1.9 allowsAirPlayForMediaPlayback

一个布尔值,指示是否AirPlay允许播放
默认的是yes

1.10 allowsPictureInPictureMediaPlayback

一个布尔值,是否允许html视频播放画中画中
默认的是yes
不太明白这个属性

1.11 mediaTypesRequiringUserActionForPlayback

确定哪些媒体类型需要用户手势开始播放
类型是WKAudiovisualMediaTypes
WKAudiovisualMediaTypeNone表示不需要手势开始播放媒体

1.12

selectionGranularity
是个枚举类

WKSelectionGranularityCharacter:用户长按复制文字的选择区域是非用户自定义,选择点可以放置在任何字符边界上
WKSelectionGranularityDynamic:用户长按复制文字的选择是用户自定义

没发现这二者太大的区别,有待以后验证

1.13 userInterfaceDirectionPolicy

这个是mac os 的属性
用户界面元素的方向性,不知道什么意思

1.14 dataDetectorTypes

所需的数据检测类型,比如webview里我们可以检测电话号码、链接、地址、日历、邮箱
所以我们可以设置需要检测哪些类型,是个枚举类型WKDataDetectorTypes

WKDataDetectorTypeNone:没有进行检测
WKDataDetectorTypePhoneNumber:电话号码被检测并变成链接
WKDataDetectorTypeLink:文本中的URL被检测并转换为链接
WKDataDetectorTypeAddress:地址被检测并转换为链接
WKDataDetectorTypeCalendarEvent:将来的日期和时间被检测并转换为链接
WKDataDetectorTypeTrackingNumber:跟踪号码被检测并转换为链接
WKDataDetectorTypeFlightNumber:航班号被检测并转换为链接
WKDataDetectorTypeLookupSuggestion:没有解释是做什么的
WKDataDetectorTypeAll:所有上述数据类型在检测时都被转换为链接。选择此值将自动包含添加到该常数的任何新检测类型
1.15 setURLSchemeHandler:forURLScheme:

为给定的URL scheme添加处理方案

相关文章

网友评论

    本文标题:WKWebView - WKWebViewConfigurati

    本文链接:https://www.haomeiwen.com/subject/kjdcfqtx.html