您的位置:首页 > 移动开发

UIWebView 无缝切换到 WKWebView

2016-07-16 10:49 417 查看
WKWebView 是IOS8新增的 Web浏览视图

优点:   加载速度  比UIWebView提升差不多一倍的, 内存使用上面,反而还少了一半。 

缺点:   WKWebView 不支持缓存 和   NSURLProtocol 拦截了

我建议如果对缓存不高的页面可以使用,用户体验会提高很多。  

由于项目中以前都是用 UIWebView  而且还要兼容 IOS8  之前的机子。  所以  我创建了一个新类  IMYWebView   你只要全局替换 UIWebView 就能无缝升级到 WKWebView 啦

IMYWebView.h 中的API 会在内部自动支持 UIWebView 和 WKWebView,

title,estimatedProgress 是我认为 WKWebView 中比较有用的新增API

[objc] view
plain copy

@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  

代码地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: