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开始使用的网页加载器一直是开发的心病:加载速度慢,占用内存多,优化困难。如果加载网页多,还可能因为过量占...

iOS 8 WkWebView 网页的配置和前进,后退,js 交互和进度条的加载

本文也将讲解到WebKit中更新的WKWebView控件的新特性与使用方法,它很好的解决了UIWebView存在的内存、加载速度等诸多问题。 一、WKWebView新特性 在性能、稳定...

WKWebView替换WebView体会总结

一.引言 最近应公司要求,把项目里用到的UIWebView全都用WKWebView替换掉。于是就去研究了WKWebview,加上在使用中遇到的一些问题加以总结,如有不足之处,还望指出,本人将会加以修改...

WKWebView的使用-适应屏幕宽度

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

UIWebView、WKWebView使用详解及性能分析

一、整体介绍 UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView将逐步取代笨重的UIWebView。通过简单的测试即可发现UIWebView占用过多内存,...

WKWebView从入门到趟坑

转载自: http://www.jianshu.com/p/90a90bd13aac UIWebView 之痛 开发App的过程中,常常会遇到在App内部加载网页,通常用UIWebView...

【腾讯Bugly干货分享】WKWebView 那些坑

本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/rhYKLIbXOsUJC_n6dt9UfA导语WKWe...

WKWebView的使用详解

一.引言应公司要求,把项目里用到的UIWebView全都用WKWebView替换掉。于是本人就去研究了WKWebview,加上在使用中遇到的一些问题加以总结,就写下这篇博文。如有不足的地方,还望留言指...
  • xj_love
  • xj_love
  • 2016年07月29日 11:14
  • 14731

WKWebView VS UIWebView

一、UIWebView 通过使用UIWebView控件,可以实现一个内置的浏览器(类似于Safari),而且可以直接将这个浏览器内嵌到应用的任意位置;UIWebView直接继承了UIView基类。...

iOS UIWebView和WKWebView的JS调用详解

一般应用开发,用到webview和JS交互的地方特别多,当然也有很多优秀的第三方可以使用,例如:WebViewJavascriptBridge,有兴趣的可以研究下,非常好用的一个框架,本文主要概括下苹...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UIWebView 无缝切换到 WKWebView
举报原因:
原因补充:

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