网页跳转-WKWebView和SFSafariViewController详解

1.完成网页跳转,我们很容易想到利用UIWebView和Safari来实现。其中:
  • safari自带的功能交多,前进后退,刷新,进度条,网址等。但是需要跳转 APP,必须打开系统自带的safari程序来打开网页,这样会增大内存消耗。
  • webView虽然可以不用打开新的程序来实现跳转网页的功能,但其不能真实实现进度条功能,只能通过假数据模拟。

2. IOS 8.0开始,苹果提供了WKWebview ——webView的升级版,可以实现真实的进度条功能。
加载中.png
加载完成.png

WKWebview 实现真实进度条步骤:

  • 1.通过拖控件或者代码的方式添加一个UIProgressView,用于显示加载进度。
  • 2.创建网路请求对象,利用UIProgressView对象加载该请求
/创建网络请求对象
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:self.url]];
    //加载请求对象
    [webView loadRequest:request];
  • 3.监听progress的变化
[webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
    self.mineProgressView.progress = [change[@"new"]floatValue];
    //加载完成移除进度条
    self.mineProgressView.hidden = self.mineProgressView.progress >= 1;
    
}
  • 4.移除观察者
//移除观察者
- (void)dealloc {
    [self.webView removeObserver:self forKeyPath:@"estimatedProgress"];
}


3.SFSafariViewController (iOS 9.0)
  • 不再需要跳转APP
  • 跳转控制器用present,此时效果为modal,因为系统底层给modal的方式做了封装。
  • present方式:导航条和tabBar是safari样式的
SFSafariViewController * safari = [[SFSafariViewController alloc]initWithURL:[NSURL URLWithString:detailPath]];
[self presentViewController:safari animated:YES completion:nil];
present方式.png
  • push 方式:导航条和tabBar是就是普通push出来的样式
push方式.png

新View出现的方式都是push样式,但是导航条和TabBar不一样,这就说明了present方式弹出控制器是系统在push的方式上做了进一步封装。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,223评论 4 61
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,539评论 7 249
  • 体验、把员工对美好生活的向往作为奋斗目标,依靠全员创造改变全员生活品质。 精进、任何人不要损害全员的利益,不要幻想...
    冯祥林阅读 165评论 0 0
  • 祸起于微,持崩于欲。唯有克己自律,消除杂念。方可能由内而外的超越。
    cqmudhw阅读 183评论 0 0
  • 我这一生,为了寻找全面普渡众生的普渡大法,曾经当过道士、和尚,走访过天下许多道观、佛寺,拜访过许多佛道修练高...
    保卫中华阅读 5,233评论 1 2