iOS UI基础-21 WKWebView
WKWebView,直接显示网页,需要引入第三方类:https://github.com/marcuswestin/WebViewJavascriptBridge
加上进度条代码,很完美使用
webView.h
- #import <UIKit/UIKit.h>
- @interface ECBankCardAddViewController : UIViewController
- /** 请求H5的时候,需要传的token */
- @property (nonatomic, copy) NSString *token;
- @end
webView.m
- //
- // ECBandCardAddViewController.m
- // ECardBusiness
- //
- // Created by yongsheng.jiang on 2018/2/6.
- // Copyright © 2018年 bige. All rights reserved.
- //
- #import "ECBankCardAddViewController.h"
- #import "WebViewJavascriptBridge.h"
- @interface ECBankCardAddViewController ()<WKNavigationDelegate>
- @property (nonatomic, strong) WKWebView *webView;
- @property (nonatomic, weak) UIProgressView *progressView;
- @end
- @implementation ECBankCardAddViewController
- - (void)dealloc {
- [self.webView removeObserver:self forKeyPath:NSStringFromSelector(@selector(estimatedProgress))];
- self.webView.navigationDelegate = nil;
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- self.title = @"添加银行卡";
- self.view.backgroundColor = [UIColor whiteColor];
- WKWebView *webView = [[NSClassFromString(@"WKWebView") alloc] initWithFrame:self.view.bounds];
- [self.view addSubview:webView];
- self.webView = webView;
- NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",web_add_bandcard,self.token]]];
- [webView loadRequest:request];
- [webView addObserver:self
- forKeyPath:NSStringFromSelector(@selector(estimatedProgress))
- options:0
- context:nil];
- [self setupProgressView];
- }
- - (void)setupProgressView {
- UIProgressView *progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
- progressView.frame = CGRectMake(0, 64, SCREEN_WIDTH, 5);
- [progressView setTrackTintColor:[UIColor colorWithRed:240.0/255
- green:240.0/255
- blue:240.0/255
- alpha:1.0]];
- progressView.progressTintColor = [UIColor greenColor];
- [self.view addSubview:progressView];
- _progressView = progressView;
- }
- #pragma mark - WKNavigationDelegate
- - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation {
- NSLog(@"didStartProvisionalNavigation");
- //开始加载的时候,让进度条显示
- self.progressView.hidden = NO;
- }
- - (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation {
- NSLog(@"didCommitNavigation");
- }
- - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
- NSLog(@"didFinishNavigation");
- }
- #pragma mark - KVO
- //kvo 监听进度
- -(void)observeValueForKeyPath:(NSString *)keyPath
- ofObject:(id)object
- change:(NSDictionary<NSKeyValueChangeKey,id> *)change
- context:(void *)context{
- if ([keyPath isEqualToString:NSStringFromSelector(@selector(estimatedProgress))]
- && object == self.webView) {
- [self.progressView setAlpha:1.0f];
- BOOL animated = self.webView.estimatedProgress > self.progressView.progress;
- [self.progressView setProgress:self.webView.estimatedProgress
- animated:animated];
- if (self.webView.estimatedProgress >= 1.0f) {
- [UIView animateWithDuration:0.3f
- delay:0.3f
- options:UIViewAnimationOptionCurveEaseOut
- animations:^{
- [self.progressView setAlpha:0.0f];
- }
- completion:^(BOOL finished) {
- [self.progressView setProgress:0.0f animated:NO];
- }];
- }
- } else{
- [super observeValueForKeyPath:keyPath
- ofObject:object
- change:change
- context:context];
- }
- }
- @end
参考文档:http://blog.csdn.net/MyKingSaber/article/details/54134216
iOS UI基础-21 WKWebView的更多相关文章
- iOS UI基础-17.0 UILable之NSMutableAttributedString
在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦 ...
- iOS UI基础-13.0 数据存储
应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Lay ...
- iOS UI基础-9.0 UITableView基础
在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView.UITableView继承自UIScrollView,因此支持垂直滚动,而且性能极佳. UITableView有两种样式: ...
- iOS UI基础-6.0 UIActionSheet的使用
UIActionSheet是在iOS弹出的选择按钮项,可以添加多项,并为每项添加点击事件. 使用 1.需要实现UIActionSheetDelegate 协议 @interface NJWisdom ...
- iOS UI基础-4.2应用程序管理 Xib文件使用
Xib调整使用 1.新建xib文件 New File-->User Interface-->Empty 2.打开新建的xib文件,出现可视化窗口 (1)拖入一个UIView (不是UIVi ...
- iOS UI基础-4.0应用程序管理
功能与界面 功能分析: 以九宫格的形式展示应用信息 点击下载按钮后,做出相应的操作 步骤分析: 加载应用信息 根据应用的个数创建对应的view 监听下载按钮点击 整个应用界面: 程序实现 思路 UI布 ...
- iOS UI基础-1.0加法计算器
1.打开Xcode,新建一个项目 2.Single View Application是最适合初学者的模板 3.填写该应用相关信息 4.搭建UI界面 项目创建完毕后,自动帮我们做了很多配置,也自动生成了 ...
- iOS UI基础 - 20 UITextField
//找到已经创建好的UITextField UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(, , RFS ...
- iOS UI基础-19.0 UICollectionView
直接上代码,说明请看注释吧 1.继承三个代理 UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateF ...
随机推荐
- ASCII码与unicode字符集
问题1:为什么需要字符ASCII码.unicode码等等???它们到底有什么作用? 首先要明白一个事实:在计算机中只能用一系列存储着的0和1,当我们把一个字符存放在计算机时,我们是如何表示常用的字符呢 ...
- php -- 类对象调用静态方法
以前一直以为 静态方法的调用:类名::静态方法 非静态方法的调用:类对象->非静态方法 最近研究一个类,发现一个比较奇怪的问题,用“类对象->静态方法”这种方式居然成功的调用了静态方法.很 ...
- 运营商挂时长神器,批量导入账号,导出账号状态,随机修改MAC地址
话不多说,直接上图 可批量导入账号,同时修改广域网口MAC地址 导出账号状态,包括在线时长,MAC,IP地址等等
- 使用MegaCli监控Linux硬盘
1.首先查看机器是否使用的是MegaRAID卡 dmesg | grep RAID [ 6.932741] scsi host0: Avago SAS based MegaRAID driver 2. ...
- varchar2长度的意义
参考:http://www.cnblogs.com/vipcjob/archive/2010/06/08/1754075.html http://www.itpub.net/thread-732714 ...
- 并发编程基础之ThreadLocal
一:概念 在多线程并发访问的情况下,为了解决线程安全,一般我们会使用synchronized关键字,如果并发访问量不是很大,可以使用synchronized, 但是如果数据量比较大,我们可以考虑使用T ...
- [BTS] BizTalk EDI character set and separator settings
最近一个项目上遇到需要对EDI头.分隔符.小数点等配置项进行设置. 这里只记录一下结果,原理不记了,多看MSDN. UNB1中的信息在BizTalk中是不会体现在EDI输出文件中的,双方协商好即可. ...
- Inside The C++ Object Model(五)
============================================================================5-0. 一般而言,class 的data me ...
- makefile编译错误情况整理
错误情况1:makefile:5: *** 遗漏分隔符 . 停止 原因:具体的编译动作,开头不可以有空格,留白是由 按tab键形成的. 解决方法:去掉空格,改为tab键后,再执行make命令,成功. ...
- HOOK IDT频繁蓝屏(Window 正确 HOOK IDT)
环境 win7x64 Microsoft Windows [版本 6.1.7601]也是一个朋友 HOOK IDT 测试 问我IDT为啥老是蓝屏.结果是因为swapgs问题. 如果你知道swapgs作 ...