WKWebView,直接显示网页,需要引入第三方类:https://github.com/marcuswestin/WebViewJavascriptBridge

加上进度条代码,很完美使用

webView.h

  1. #import <UIKit/UIKit.h>
  2.  
  3. @interface ECBankCardAddViewController : UIViewController
  4. /** 请求H5的时候,需要传的token */
  5. @property (nonatomic, copy) NSString *token;
  6. @end

webView.m

  1. //
  2. // ECBandCardAddViewController.m
  3. // ECardBusiness
  4. //
  5. // Created by yongsheng.jiang on 2018/2/6.
  6. // Copyright © 2018年 bige. All rights reserved.
  7. //
  8.  
  9. #import "ECBankCardAddViewController.h"
  10. #import "WebViewJavascriptBridge.h"
  11.  
  12. @interface ECBankCardAddViewController ()<WKNavigationDelegate>
  13. @property (nonatomic, strong) WKWebView *webView;
  14. @property (nonatomic, weak) UIProgressView *progressView;
  15.  
  16. @end
  17.  
  18. @implementation ECBankCardAddViewController
  19.  
  20. - (void)dealloc {
  21. [self.webView removeObserver:self forKeyPath:NSStringFromSelector(@selector(estimatedProgress))];
  22. self.webView.navigationDelegate = nil;
  23. }
  24.  
  25. - (void)viewDidLoad {
  26. [super viewDidLoad];
  27. self.title = @"添加银行卡";
  28. self.view.backgroundColor = [UIColor whiteColor];
  29.  
  30. WKWebView *webView = [[NSClassFromString(@"WKWebView") alloc] initWithFrame:self.view.bounds];
  31. [self.view addSubview:webView];
  32. self.webView = webView;
  33.  
  34. NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",web_add_bandcard,self.token]]];
  35. [webView loadRequest:request];
  36.  
  37. [webView addObserver:self
  38. forKeyPath:NSStringFromSelector(@selector(estimatedProgress))
  39. options:0
  40. context:nil];
  41.  
  42. [self setupProgressView];
  43. }
  44.  
  45. - (void)setupProgressView {
  46. UIProgressView *progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
  47. progressView.frame = CGRectMake(0, 64, SCREEN_WIDTH, 5);
  48.  
  49. [progressView setTrackTintColor:[UIColor colorWithRed:240.0/255
  50. green:240.0/255
  51. blue:240.0/255
  52. alpha:1.0]];
  53. progressView.progressTintColor = [UIColor greenColor];
  54. [self.view addSubview:progressView];
  55.  
  56. _progressView = progressView;
  57. }
  58.  
  59. #pragma mark - WKNavigationDelegate
  60. - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation {
  61. NSLog(@"didStartProvisionalNavigation");
  62. //开始加载的时候,让进度条显示
  63. self.progressView.hidden = NO;
  64. }
  65.  
  66. - (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation {
  67. NSLog(@"didCommitNavigation");
  68. }
  69.  
  70. - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
  71. NSLog(@"didFinishNavigation");
  72. }
  73.  
  74. #pragma mark - KVO
  75. //kvo 监听进度
  76. -(void)observeValueForKeyPath:(NSString *)keyPath
  77. ofObject:(id)object
  78. change:(NSDictionary<NSKeyValueChangeKey,id> *)change
  79. context:(void *)context{
  80.  
  81. if ([keyPath isEqualToString:NSStringFromSelector(@selector(estimatedProgress))]
  82. && object == self.webView) {
  83. [self.progressView setAlpha:1.0f];
  84. BOOL animated = self.webView.estimatedProgress > self.progressView.progress;
  85. [self.progressView setProgress:self.webView.estimatedProgress
  86. animated:animated];
  87.  
  88. if (self.webView.estimatedProgress >= 1.0f) {
  89. [UIView animateWithDuration:0.3f
  90. delay:0.3f
  91. options:UIViewAnimationOptionCurveEaseOut
  92. animations:^{
  93. [self.progressView setAlpha:0.0f];
  94. }
  95. completion:^(BOOL finished) {
  96. [self.progressView setProgress:0.0f animated:NO];
  97. }];
  98. }
  99. } else{
  100. [super observeValueForKeyPath:keyPath
  101. ofObject:object
  102. change:change
  103. context:context];
  104. }
  105. }
  106.  
  107. @end

参考文档:http://blog.csdn.net/MyKingSaber/article/details/54134216

iOS UI基础-21 WKWebView的更多相关文章

  1. iOS UI基础-17.0 UILable之NSMutableAttributedString

    在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦 ...

  2. iOS UI基础-13.0 数据存储

    应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Lay ...

  3. iOS UI基础-9.0 UITableView基础

    在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView.UITableView继承自UIScrollView,因此支持垂直滚动,而且性能极佳. UITableView有两种样式: ...

  4. iOS UI基础-6.0 UIActionSheet的使用

    UIActionSheet是在iOS弹出的选择按钮项,可以添加多项,并为每项添加点击事件. 使用 1.需要实现UIActionSheetDelegate  协议 @interface NJWisdom ...

  5. iOS UI基础-4.2应用程序管理 Xib文件使用

    Xib调整使用 1.新建xib文件 New File-->User Interface-->Empty 2.打开新建的xib文件,出现可视化窗口 (1)拖入一个UIView (不是UIVi ...

  6. iOS UI基础-4.0应用程序管理

    功能与界面 功能分析: 以九宫格的形式展示应用信息 点击下载按钮后,做出相应的操作 步骤分析: 加载应用信息 根据应用的个数创建对应的view 监听下载按钮点击 整个应用界面: 程序实现 思路 UI布 ...

  7. iOS UI基础-1.0加法计算器

    1.打开Xcode,新建一个项目 2.Single View Application是最适合初学者的模板 3.填写该应用相关信息 4.搭建UI界面 项目创建完毕后,自动帮我们做了很多配置,也自动生成了 ...

  8. iOS UI基础 - 20 UITextField

    //找到已经创建好的UITextField UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(, , RFS ...

  9. iOS UI基础-19.0 UICollectionView

    直接上代码,说明请看注释吧 1.继承三个代理 UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateF ...

随机推荐

  1. ASCII码与unicode字符集

    问题1:为什么需要字符ASCII码.unicode码等等???它们到底有什么作用? 首先要明白一个事实:在计算机中只能用一系列存储着的0和1,当我们把一个字符存放在计算机时,我们是如何表示常用的字符呢 ...

  2. php -- 类对象调用静态方法

    以前一直以为 静态方法的调用:类名::静态方法 非静态方法的调用:类对象->非静态方法 最近研究一个类,发现一个比较奇怪的问题,用“类对象->静态方法”这种方式居然成功的调用了静态方法.很 ...

  3. 运营商挂时长神器,批量导入账号,导出账号状态,随机修改MAC地址

    话不多说,直接上图 可批量导入账号,同时修改广域网口MAC地址 导出账号状态,包括在线时长,MAC,IP地址等等

  4. 使用MegaCli监控Linux硬盘

    1.首先查看机器是否使用的是MegaRAID卡 dmesg | grep RAID [ 6.932741] scsi host0: Avago SAS based MegaRAID driver 2. ...

  5. varchar2长度的意义

    参考:http://www.cnblogs.com/vipcjob/archive/2010/06/08/1754075.html http://www.itpub.net/thread-732714 ...

  6. 并发编程基础之ThreadLocal

    一:概念 在多线程并发访问的情况下,为了解决线程安全,一般我们会使用synchronized关键字,如果并发访问量不是很大,可以使用synchronized, 但是如果数据量比较大,我们可以考虑使用T ...

  7. [BTS] BizTalk EDI character set and separator settings

    最近一个项目上遇到需要对EDI头.分隔符.小数点等配置项进行设置. 这里只记录一下结果,原理不记了,多看MSDN. UNB1中的信息在BizTalk中是不会体现在EDI输出文件中的,双方协商好即可. ...

  8. Inside The C++ Object Model(五)

    ============================================================================5-0. 一般而言,class 的data me ...

  9. makefile编译错误情况整理

    错误情况1:makefile:5: *** 遗漏分隔符 . 停止 原因:具体的编译动作,开头不可以有空格,留白是由 按tab键形成的. 解决方法:去掉空格,改为tab键后,再执行make命令,成功. ...

  10. HOOK IDT频繁蓝屏(Window 正确 HOOK IDT)

    环境 win7x64 Microsoft Windows [版本 6.1.7601]也是一个朋友 HOOK IDT 测试 问我IDT为啥老是蓝屏.结果是因为swapgs问题. 如果你知道swapgs作 ...