免费开源的iOS开发学习平台

WKWebView详解:1-WKWebView简介

自iOS8开始,苹果推出了新框架WebKit,提供了替换UIWebView的组件WKWebView,一个用来展示网页的组件。WKWebView解决了UIWebView加载速度慢,占用内存多,优化困难等问题,可以说,WKWebView是目前App内部加载网页的最佳选择。

WKWebView简介

WKWebView是Webkit框架中提供的类。WKWebView与之前的UIWebView相比做了很多的功能提升,主要体现在如下几个方面。

  • 在性能、稳定性、功能方面有很大提升,减少了加载网页时占用的内存

  • 更好的支持HTML5的特性

  • 高达60fps的滚动刷新率以及内置手势

  • 允许JavaScript的Nitro库加载并使用

  • 将UIWebViewDelegate与UIWebView重构成了14类与3个协议

WKWebView常用属性介绍

WKWebView类中,提供了如下一些常用的属性用于获取访问网页的信息以及对网页访问过程中的控制功能。

  • 网页标题
@property (nullable, nonatomic, readonly, copy) NSString *title;
  • 网页的url
@property (nullable, nonatomic, readonly, copy) NSURL *URL;
  • 网页是否正在加载中
@property (nonatomic, readonly, getter=isLoading) BOOL loading;
  • 是否允许回退
@property (nonatomic, readonly) BOOL canGoBack;
  • 是否允许前进
@property (nonatomic, readonly) BOOL canGoForward;
  • 标识是否支持左、右滑动手势来进行网页后退、前进
@property (nonatomic) BOOL allowsBackForwardNavigationGestures;
  • UI代理属性,用于响应用户交互
@property (nullable, nonatomic, weak) id <WKUIDelegate> UIDelegate;
  • 与WKWebView相关联的scrollView
@property (nonatomic, readonly, strong) UIScrollView *scrollView;

WKWebView常用方法介绍

WKWebView类主要用于展示网页,因此在WKWebView类中提供了用于网页展示以及控制的方法,同时在WKWebView中也支持执行JavaScript代码。

  • WKWebView初始化方法
- (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration NS_DESIGNATED_INITIALIZER;
  • 通过url加载网页视图
- (nullable WKNavigation *)loadRequest:(NSURLRequest *)request;
  • 网页后退
- (nullable WKNavigation *)goBack;
  • 网页前进
- (nullable WKNavigation *)goForward;
  • 网页刷新
- (nullable WKNavigation *)reload;
  • 停止加载
- (void)stopLoading;
  • 执行JavaScript代码
- (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^ _Nullable)(_Nullable id, NSError * _Nullable error))completionHandler;