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)iddelegate;///内部使用的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