ios11 WKWebView变化

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

你可能感兴趣的:(ios11 WKWebView变化)