1.增加了一个截屏的方法,可以自定义截取的矩形框,默认是所有可见区域。还可以设置获取的图片的宽度,高度根据宽度等比计算得到。(iOS11之前要截屏只能用自己绘制的方式实现)
- (void)takeSnapshotWithConfiguration:(nullable WKSnapshotConfiguration *)snapshotConfiguration completionHandler:(void (^)(UIImage * _Nullable snapshotImage, NSError * _Nullable error))completionHandler
@property(nonatomic) CGRect rect;
@property(nullable,nonatomic,copy) NSNumber *snapshotWidth;
2.增加了URLSchemeTask和URLSchemeHandler处理自定义的scheme
这两个是WKWebViewConfiguration的方法,用于注册scheme到对应的handler
- (void)setURLSchemeHandler:(nullable id)urlSchemeHandler forURLScheme:(NSString *)urlScheme
- (nullable id)urlSchemeHandlerForURLScheme:(NSString *)urlScheme
这个方法会告诉你系统能否处理这个scheme,通常自定义的scheme都是返回NO
+ (BOOL)handlesURLScheme:(NSString *)urlScheme
还有两个代理方法,系统通过这个告诉你应该开始处理scheme或者停止处理了。注意:在停止的这个方法里面不要调用任何回调函数,否则系统会抛出异常。
- (void)webView:(WKWebView*)webView startURLSchemeTask:(id)urlSchemeTask;
- (void)webView:(WKWebView*)webView stopURLSchemeTask:(id)urlSchemeTask;
那么回调函数有哪些呢?(这些函数在WKURLSchemeHandler协议中定义)
- (void)didReceiveResponse:(NSURLResponse*)response;
- (void)didReceiveData:(NSData*)data;
- (void)didFinish;
- (void)didFailWithError:(NSError*)error;
这些是不是跟NSURLConnection的代理方法很像?没错,就是差不多的,只不过这些是由你主动调用的,你要告诉系统你已经接收到数据了或者是失败了。然后系统就会做相应处理。
3.新增了WKContentRuleList用于处理一组Web内容的规则列表,然而文档中并没有说具体怎么用。这篇博客介绍了WKContentRuleList的用法:
http://www.jianshu.com/p/8af24e9dc82e
4.新增了WKHTTPCookieStore来管理与WKWebsiteDataStore相关的HTTP cookie,之前wkwebview cookie丢失的问题应该可以得到解决了。
具体来说包括设置、删除、获取cookie以及注册一个观察者监听cookie的变化
- (void)getAllCookies:(void(^)(NSArray *))completionHandler;
- (void)setCookie:(NSHTTPCookie*)cookie completionHandler:(nullablevoid(^)())completionHandler;
- (void)deleteCookie:(NSHTTPCookie*)cookie completionHandler:(nullablevoid(^)())completionHandler;
- (void)addObserver:(id)observer;
- (void)removeObserver:(id)observer;
cookieStoreObserver回调函数:
@protocolWKHTTPCookieStoreObserver
@optional
- (void)cookiesDidChangeInCookieStore:(WKHTTPCookieStore*)cookieStore;
@end
网友评论