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 中加载 Microsoft Office 文档
WKWebView 在加载另一个 URL 时不会重新呈现内容