UIWebView 无缝切换到 WKWebView

m

优点:   加载速度  比UIWebView提升差不多一倍的, 内存使用上面,反而还少了一半。 

缺点:   WKWebView 不支持缓存 和   NSURLProtocol 拦截了


我建议如果对缓存不高的页面可以使用,用户体验会提高很多。  


由于项目中以前都是用 UIWebView  而且还要兼容 IOS8  之前的机子。  所以  我创建了一个新类  IMYWebView   你只要全局替换 UIWebView 就能无缝升级到 WKWebView 啦


IMYWebView.h 中的API 会在内部自动支持 UIWebView 和 WKWebView,

title,estimatedProgress是我认为 WKWebView 中比较有用的新增API

[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 delegate;  
  7.   
  8. ///内部使用的webView  
  9. @property (nonatomicreadonlyid realWebView;  
  10. ///是否正在使用 UIWebView  
  11. @property (nonatomicreadonlyBOOL usingUIWebView;  
  12. ///预估网页加载进度  
  13. @property (nonatomicreadonlydouble estimatedProgress;  
  14.   
  15. @property (nonatomicreadonlyNSURLRequest *originRequest;  
  16.   
  17. ///back 层数  
  18. - (NSInteger)countOfHistory;  
  19. - (void)gobackWithStep:(NSInteger)step;  
  20.   
  21. ///---- UI 或者 WK 的API  
  22. @property (nonatomicreadonlyUIScrollView *scrollView;  
  23.   
  24. - (id)loadRequest:(NSURLRequest *)request;  
  25. - (id)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;  
  26.   
  27. @property (nonatomicreadonlycopyNSString *title;  
  28. @property (nonatomicreadonlyNSURLRequest *currentRequest;  
  29. @property (nonatomicreadonlyNSURL *URL;  
  30.   
  31. @property (nonatomicreadonlygetter=isLoading) BOOL loading;  
  32. @property (nonatomicreadonlyBOOL canGoBack;  
  33. @property (nonatomicreadonlyBOOL 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 (^)(idNSError *))completionHandler;  
  42. ///不建议使用这个办法  因为会在内部等待webView 的执行结果  
  43. - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)javaScriptString __deprecated_msg("Method deprecated. Use [evaluateJavaScript:completionHandler:]");  
  44.   
  45. ///是否根据视图大小来缩放页面  默认为YES  
  46. @property (nonatomicBOOL scalesPageToFit;  
  47.   
  48. @end  


代码地址

你可能感兴趣的:(iOS)