- //
- // IntegralMallViewController.m
- // M
- //
- // Created by zsl on 2018/4/19.
- // Copyright © 2018 年 zsl. All rights reserved.
- //
- #import "IntegralMallViewController.h"
- #import
- @interfaceIntegralMallViewController ()
- /** 新版 webView*/
- @property(nonatomic,strong) WKWebView *webView;
- /** 进度条 */
- @property(nonatomic,strong) UIProgressView *progressView;
- /** 返回按钮 */
- @property(nonatomic,strong) UIBarButtonItem *backItem;
- /** 关闭按钮 */
- @property(nonatomic,strong) UIBarButtonItem *closeItem;
- @end
- @interfaceNSURLRequest (InvalidSSLCertificate)//https 证书
- + (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host;
- + (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString *)host;
- @end
- @implementationIntegralMallViewController
- #pragma mark - 添加关闭按钮
- - (void)addLeftButton {
- self.navigationItem.leftBarButtonItem =self.backItem;
- }
- #pragma mark - init
- /**
- * 返回按钮
- */
- (UIBarButtonItem *)backItem {
- if(!_backItem) {
- _backItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageWithOriginalName:@"root_cancel"]style:UIBarButtonItemStylePlain target:selfaction:@selector(backNative)];
- self.navigationItem.leftBarButtonItem = _backItem;
- }
- return_backItem;
- }
- /**
- * 点击返回的方法
- */
- - (void)backNative {
- // 判断是否有上一层 H5 页面
- if([self.webViewcanGoBack]) {
- // 如果有则返回
- [self.webViewgoBack];
- // 同时设置返回按钮和关闭按钮为导航栏左边的按钮
- self.navigationItem.leftBarButtonItems = @[self.backItem, self.closeItem];
- }else{
- [selfcloseNative];
- }
- }
- /**
- * 关闭按钮
- */
- - (UIBarButtonItem*)closeItem {
- if (!_closeItem) {
- _closeItem = [[UIBarButtonItem alloc] initWithTitle:@"关闭" style:UIBarButtonItemStylePlain target:self action:@selector(closeNative)];
- }
- return _closeItem;
- }
- /**
- * 关闭 H5 页面, 直接回到原生页面
- */
- - (void)closeNative {
- [self.navigationController popViewControllerAnimated:YES];
- }
- - (void)viewWillAppear:(BOOL)animated {
- [superviewWillAppear:animated];
- /** 添加 title 观察者 */
- [self.webView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:NULL];
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- /**1, 添加返回按钮 */
- [self addLeftButton];
- /**2, 初始化 webView*/
- [self setupWebView];
- /**3, 初始化进度条 */
- [self setupProgressView];
- }
- #pragma mark - 初始化
- - (void)setupWebView {
- // 创建 WKWebView
- self.webView = [[WKWebView alloc] initWithFrame:[UIScreen mainScreen].bounds];
- self.webView.navigationDelegate = self;
- self.webView.allowsBackForwardNavigationGestures = YES;
- // 设置访问的 URL
- NSURL *url = [NSURL URLWithString:@"https://www.jianshu.com/writer#/notebooks/22697260/notes/26857069"];
- // 根据 URL 创建请求
- NSURLRequest *request = [NSURLRequest requestWithURL:url];
- [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];
- // WKWebView 加载请求
- [self.webViewloadRequest:request];
- // 将 WKWebView 添加到视图
- [self.viewaddSubview:self.webView];
- [self.webView addObserver:self forKeyPath:NSStringFromSelector(@selector(estimatedProgress)) options:0 context:nil];
- }
- /**
- * 初始化进度条
- */
- - (void)setupProgressView {
- self.progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
- self.progressView.frame=CGRectMake(0,1,kScreenWidth,5);
- [self.progressView setTrackTintColor:[UIColor colorWithRed:240.0/255
- green:240.0/255
- blue:240.0/255
- alpha:1.0]];
- self.progressView.progressTintColor= ZTCOLOR;
- [self.view addSubview:self.progressView];
- }
- #pragma mark - WKNavigationDelegate
- - (void)webView:(WKWebView*)webView didStartProvisionalNavigation:(WKNavigation*)navigation {
- // 开始加载的时候, 让进度条显示
- self.progressView.hidden = NO;
- }
- - (void)webView:(WKWebView*)webView didCommitNavigation:(WKNavigation*)navigation {
- }
- - (void)webView:(WKWebView*)webView didFinishNavigation:(WKNavigation*)navigation {
- }
- #pragma mark - KVO
- //kvo 监听进度
- -(void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void*)context {
- if([keyPathisEqualToString:NSStringFromSelector(@selector(estimatedProgress))]
- && object ==self.webView) {
- [self.progressViewsetAlpha:1.0f];
- BOOLanimated =self.webView.estimatedProgress>self.progressView.progress;
- [self.progressViewsetProgress:self.webView.estimatedProgressanimated:animated];
- if(self.webView.estimatedProgress>=1.0f) {
- [UIView animateWithDuration:0.3f delay:0.3f options:UIViewAnimationOptionCurveEaseOut animations:^{
- [self.progressViewsetAlpha:0.0f];
- }completion:^(BOOLfinished) {
- [self.progressViewsetProgress:0.0fanimated:NO];
- }];
- }
- } elseif([keyPathisEqualToString:@"title"]) {// 网页 title
- if(object ==self.webView) {
- self.title=self.webView.title;
- } else{
- [superobserveValueForKeyPath:keyPathofObject:objectchange:changecontext:context];
- }
- }else{
- [superobserveValueForKeyPath:keyPathofObject:objectchange:changecontext:context];
- }
- }
- - (void)dealloc {
- [self.webView removeObserver:self
- forKeyPath:NSStringFromSelector(@selector(estimatedProgress))];
- self.webView.navigationDelegate = nil;
- [self.webView removeObserver:self forKeyPath:@"title"];
- }
- @end
来源: http://www.jianshu.com/p/9f5ba1ad66e0