zoukankan      html  css  js  c++  java
  • 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
    


    代码地址

  • 相关阅读:
    IOS开发环境
    IOS开发环境搭建
    Eclipse简明使用教程(java集成开发环境)
    分布式相关
    成为架构师之路认识分布式架构
    什么是分布式系统,如何学习分布式系统
    分布式定义
    VIM命令详解
    vim常用命令
    vi/vim 命令使用详解
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7008769.html
Copyright © 2011-2022 走看看