UIWebView 无缝切换到 WKWebView

原创 2015年07月09日 10:12:28

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


代码地址

WKWebView 使用和坑

开发App的过程中,常常会遇到在App内部加载网页,通常用UIWebView加载。这个自iOS2开始使用的网页加载器一直是开发的心病:加载速度慢,占用内存多,优化困难。如果加载网页多,还可能因为过量占...
  • u014600626
  • u014600626
  • 2016年11月09日 13:17
  • 4751

WKWebView适应屏幕宽度

在iOS 8以后苹果推出了一个新的框架Webkit,用WKWebView代替了UIWebView,WKWebView“有占内存少,速度快”的优点 在UIWebView中,这个scalesPageTo...
  • liwei5bao
  • liwei5bao
  • 2017年04月18日 15:54
  • 1371

WKWebView的使用和各种坑的解决方法(OC+Swift)

WKWebView的基本介绍和使用 WKWebView的几个代理方法 WKWebView是苹果在iOS 8中引入的新组件,目的是给出一个新的高性能的WebView解决方案,摆脱过去 UIWebVi...
  • qq_19697705
  • qq_19697705
  • 2017年12月22日 14:39
  • 58

使用WKWebView替换UIWebView

开发App的过程中,常常会遇到在App内部加载网页,通常用UIWebView加载。这个自iOS2开始使用的网页加载器一直是开发的心病:加载速度慢,占用内存多,优化困难。如果加载网页多,还可能因为过量占...
  • liyunxiangrxm
  • liyunxiangrxm
  • 2016年07月13日 11:16
  • 774

WKWebView的使用(iOS8.0及以上版本使用)替代UIWebView

在iOS开发中,调用web页面时,最常用的就是 UIWebView控件。但在使用过程中,也让大家觉得很不爽,就是内存爆增。 自从iOS8.0以后有了WKWebView,这种情况就好转了。因为在使用...
  • potato512
  • potato512
  • 2016年09月23日 16:38
  • 3076

WKWebView的使用-适应屏幕宽度

最近在app中,需要打开一个本地的html文件,在iOS 8以后苹果推出了一个新的框架Wekkit,用WKWebView代替了UIWebView,鉴于WKWebView“占内存少,速度快”的优点,所以...
  • watermelon_
  • watermelon_
  • 2016年12月01日 10:01
  • 4238

iOS中加载HTML数据,并点击图片或链接进行相应的操作

开发中,有时候我们需要展现HTML类型的数据,这时候,我们多数选择用UIWebView加载,但是当我们需要加载大量的HTML数据时,使用UIWebView加载,性能会降低,尤其是当UITableVie...
  • fhsahfihf
  • fhsahfihf
  • 2016年07月11日 16:30
  • 3843

IMYWebView 无缝切换 UIWebView 为 WKWebView

IMYWebView 无缝切换 UIWebView 为 WKWebView
  • Sico2Sico
  • Sico2Sico
  • 2016年09月29日 19:58
  • 1104

WKWebView缓存的那点事

WKWebView自从推出至今,一直有不断地吐槽伴随,诚然,WKWebView具有很多好处:速度更快、内存更少,但是它也有一些坑 通过这几天的研究,总结一下遇到的关于WKWebView缓存的一些事情 ...
  • u013583789
  • u013583789
  • 2016年08月05日 15:03
  • 13939

UIWebView設定ScalesPageToFit

1、willRotateToInterfaceOrientation里把uiwebview reload一遍看看 2、设置UIWebView的autoresizingMask = UIViewAut...
  • tianyitianyi1
  • tianyitianyi1
  • 2012年06月25日 21:06
  • 10798
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UIWebView 无缝切换到 WKWebView
举报原因:
原因补充:

(最多只允许输入30个字)