UIWebView 无缝切换到 WKWebView

Posted yfceshi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIWebView 无缝切换到 WKWebView相关的知识,希望对你有一定的参考价值。


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


代码地址









以上是关于UIWebView 无缝切换到 WKWebView的主要内容,如果未能解决你的问题,请参考以下文章

WKWebView - 获取html表单的查询参数

从 UIWebview 迁移到 WKWebview

在 WKWebView 中加载 Microsoft Office 文档

WKWebView 在加载另一个 URL 时不会重新呈现内容

与 UIWebView 相比,WKWebView 重定向问题

将 iOS Hybrid App 从 UIWebView 迁移到 WKWebview