iOS開發之UIWebView 無縫切換到 WKWebView (IMYWebView)

WKWebView 是IOS8新增的 Web瀏覽視圖java

 

優勢:   加載速度  比UIWebView提高差很少一倍的, 內存使用上面,反而還少了一半。 git

缺點:   WKWebView 不支持緩存 和   NSURLProtocol 攔截了github

 

我建議若是對緩存不高的頁面能夠使用,用戶體驗會提升不少。  web

 

因爲項目中之前都是用 UIWebView  並且還要兼容 IOS8  以前的機子。  因此  我建立了一個新類  IMYWebView   你只要全局替換 UIWebView 就能無縫升級到 WKWebView 啦緩存

 

IMYWebView.h 中的API 會在內部自動支持 UIWebView 和 WKWebView,app

title,estimatedProgress 是我認爲 WKWebView 中比較有用的新增APIoop

 

 

[objc]  view plain  copy
  1. @interface IMYVKWebView : UIView  
  2.   
  3. ///使用UIWebView  
  4. - (instancetype)initWithFrame:(CGRect)frame usingUIWebView:(BOOL)usingUIWebView;  
  5.   
  6. @property(weak,nonatomic)id<IMYVKWebViewDelegate> delegate;  
  7.   
  8. ///內部使用的webView  
  9. @property (nonatomic, readonly) id realWebView;  
  10. ///是否正在使用 UIWebView  
  11. @property (nonatomic, readonly) BOOL usingUIWebView;  
  12. ///預估網頁加載進度  
  13. @property (nonatomic, readonly) double estimatedProgress;  
  14.   
  15. @property (nonatomic, readonly) NSURLRequest *originRequest;  
  16.   
  17. ///back 層數  
  18. - (NSInteger)countOfHistory;  
  19. - (void)gobackWithStep:(NSInteger)step;  
  20.   
  21. ///---- UI 或者 WK 的API  
  22. @property (nonatomic, readonly) UIScrollView *scrollView;  
  23.   
  24. - (id)loadRequest:(NSURLRequest *)request;  
  25. - (id)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;  
  26.   
  27. @property (nonatomic, readonly, copy) NSString *title;  
  28. @property (nonatomic, readonly) NSURLRequest *currentRequest;  
  29. @property (nonatomic, readonly) NSURL *URL;  
  30.   
  31. @property (nonatomic, readonly, getter=isLoading) BOOL loading;  
  32. @property (nonatomic, readonly) BOOL canGoBack;  
  33. @property (nonatomic, readonly) BOOL canGoForward;  
  34.   
  35. - (id)goBack;  
  36. - (id)goForward;  
  37. - (id)reload;  
  38. - (id)reloadFromOrigin;  
  39. - (void)stopLoading;  
  40.   
  41. - (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^)(id, NSError *))completionHandler;  
  42. ///不建議使用這個辦法  由於會在內部等待webView 的執行結果  
  43. - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)javaScriptString __deprecated_msg("Method deprecated. Use [evaluateJavaScript:completionHandler:]");  
  44.   
  45. ///是否根據視圖大小來縮放頁面  默認爲YES  
  46. @property (nonatomic) BOOL scalesPageToFit;  
  47.   
  48. @end  

 

 

代碼地址 https://github.com/wangyangcc/IMYWebViewatom

相關文章
相關標籤/搜索