WKWebView 是IOS8新增的 Web瀏覽視圖
優點: 加載速度 比UIWebView提升差不多一倍的, 內存使用上面,反而還少了一半。
缺點: WKWebView 不支持緩存 和 NSURLProtocol 攔截了
我建議如果對緩存不高的頁面可以使用,用戶體驗會提高很多。
由於項目中以前都是用 UIWebView 而且還要兼容 IOS8 之前的機子。 所以 我創建了一個新類 IMYWebView 你只要全局替換 UIWebView 就能無縫升級到 WKWebView 啦
IMYWebView.h 中的API 會在內部自動支持 UIWebView 和 WKWebView,
title,estimatedProgress 是我認為 WKWebView 中比較有用的新增API
- @interface IMYVKWebView : UIView
- ///使用UIWebView
- - (instancetype)initWithFrame:(CGRect)frame usingUIWebView:(BOOL)usingUIWebView;
- @property(weak,nonatomic)id<IMYVKWebViewDelegate> delegate;
- ///內部使用的webView
- @property (nonatomic, readonly) id realWebView;
- ///是否正在使用 UIWebView
- @property (nonatomic, readonly) BOOL usingUIWebView;
- ///預估網頁加載進度
- @property (nonatomic, readonly) double estimatedProgress;
- @property (nonatomic, readonly) NSURLRequest *originRequest;
- ///back 層數
- - (NSInteger)countOfHistory;
- - (void)gobackWithStep:(NSInteger)step;
- ///---- UI 或者 WK 的API
- @property (nonatomic, readonly) UIScrollView *scrollView;
- - (id)loadRequest:(NSURLRequest *)request;
- - (id)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;
- @property (nonatomic, readonly, copy) NSString *title;
- @property (nonatomic, readonly) NSURLRequest *currentRequest;
- @property (nonatomic, readonly) NSURL *URL;
- @property (nonatomic, readonly, getter=isLoading) BOOL loading;
- @property (nonatomic, readonly) BOOL canGoBack;
- @property (nonatomic, readonly) BOOL canGoForward;
- - (id)goBack;
- - (id)goForward;
- - (id)reload;
- - (id)reloadFromOrigin;
- - (void)stopLoading;
- - (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^)(id, NSError *))completionHandler;
- ///不建議使用這個辦法 因為會在內部等待webView 的執行結果
- - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)javaScriptString __deprecated_msg("Method deprecated. Use [evaluateJavaScript:completionHandler:]");
- ///是否根據視圖大小來縮放頁面 默認為YES
- @property (nonatomic) BOOL scalesPageToFit;
- @end

