1.增加了一個截屏的方法梗掰,可以自定義截取的矩形框,默認(rèn)是所有可見區(qū)域。還可以設(shè)置獲取的圖片的寬度账千,高度根據(jù)寬度等比計(jì)算得到。(iOS11之前要截屏只能用自己繪制的方式實(shí)現(xiàn))
- (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到對應(yīng)的handler
- (void)setURLSchemeHandler:(nullable id)urlSchemeHandler forURLScheme:(NSString *)urlScheme
- (nullable id)urlSchemeHandlerForURLScheme:(NSString *)urlScheme?
這個方法會告訴你系統(tǒng)能否處理這個scheme匀奏,通常自定義的scheme都是返回NO
+ (BOOL)handlesURLScheme:(NSString *)urlScheme
還有兩個代理方法,系統(tǒng)通過這個告訴你應(yīng)該開始處理scheme或者停止處理了学搜。注意:在停止的這個方法里面不要調(diào)用任何回調(diào)函數(shù)娃善,否則系統(tǒng)會拋出異常。
- (void)webView:(WKWebView*)webView startURLSchemeTask:(id)urlSchemeTask;
- (void)webView:(WKWebView*)webView stopURLSchemeTask:(id)urlSchemeTask;
那么回調(diào)函數(shù)有哪些呢瑞佩?(這些函數(shù)在WKURLSchemeHandler協(xié)議中定義)
- (void)didReceiveResponse:(NSURLResponse*)response;
- (void)didReceiveData:(NSData*)data;
- (void)didFinish;
- (void)didFailWithError:(NSError*)error;
這些是不是跟NSURLConnection的代理方法很像聚磺?沒錯,就是差不多的炬丸,只不過這些是由你主動調(diào)用的瘫寝,你要告訴系統(tǒng)你已經(jīng)接收到數(shù)據(jù)了或者是失敗了。然后系統(tǒng)就會做相應(yīng)處理稠炬。
3.新增了WKContentRuleList用于處理一組Web內(nèi)容的規(guī)則列表,然而文檔中并沒有說具體怎么用焕阿。這篇博客介紹了WKContentRuleList的用法:
http://www.reibang.com/p/8af24e9dc82e
4.新增了WKHTTPCookieStore來管理與WKWebsiteDataStore相關(guān)的HTTP cookie,之前wkwebview cookie丟失的問題應(yīng)該可以得到解決了首启。
具體來說包括設(shè)置暮屡、刪除、獲取cookie以及注冊一個觀察者監(jiān)聽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回調(diào)函數(shù):
@protocolWKHTTPCookieStoreObserver?
@optional
- (void)cookiesDidChangeInCookieStore:(WKHTTPCookieStore*)cookieStore;
@end