ios11 WKWebView变化

作者: FingerStyle | 来源:发表于2017-09-01 11:34 被阅读929次

    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变化

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