//
//? IntegralMallViewController.m
//? M
//
//? Created by zsl on 2018/4/19.
//? Copyright ? 2018年 zsl. All rights reserved.
//
#import "IntegralMallViewController.h"
#import
@interfaceIntegralMallViewController ()
/**新版WebView*/
@property(nonatomic,weak) WKWebView *webView;
/**進(jìn)度條*/
@property(nonatomic,weak) UIProgressView *progressView;
/**返回按鈕*/
@property(nonatomic,strong) UIBarButtonItem *backItem;
/**關(guān)閉按鈕*/
@property(nonatomic,strong) UIBarButtonItem *closeItem;
@end
@interfaceNSURLRequest (InvalidSSLCertificate)//https證書
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host;
+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString *)host;
@end
@implementationIntegralMallViewController
#pragma mark - 添加關(guān)閉按鈕
- (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;
}
/**
?* 點(diǎn)擊返回的方法
?*/
- (void)backNative {
? ? //判斷是否有上一層H5頁面
? ? if([self.webViewcanGoBack]) {
? ? ? ? //如果有則返回
? ? ? ? [self.webViewgoBack];
? ? ? ? //同時(shí)設(shè)置返回按鈕和關(guān)閉按鈕為導(dǎo)航欄左邊的按鈕
? ? ? ? self.navigationItem.leftBarButtonItems = @[self.backItem, self.closeItem];
? ? }else{
? ? ? ? [selfcloseNative];
? ? }
}
/**
?* 關(guān)閉按鈕
?*/
- (UIBarButtonItem*)closeItem {
? ? if (!_closeItem) {
? ? ? ? _closeItem = [[UIBarButtonItem alloc] initWithTitle:@"關(guān)閉" style:UIBarButtonItemStylePlain target:self action:@selector(closeNative)];
? ? }
? ? return _closeItem;
}
/**
?* 關(guān)閉H5頁面,直接回到原生頁面
?*/
- (void)closeNative {
? ? [self.navigationController popViewControllerAnimated:YES];
}
- (void)viewDidLoad {
? ? [super viewDidLoad];
? ? /**1赏廓、添加返回按鈕*/
? ? [self addLeftButton];
? ? /**2、初始化webView*/
? ? [self setupWebView];
? ? /**3摸柄、初始化進(jìn)度條*/
? ? [self setupProgressView];
}
#pragma mark - 初始化
- (void)setupWebView {
? ? // 創(chuàng)建WKWebView
? ? WKWebView *webView = [[WKWebView alloc] initWithFrame:[UIScreen mainScreen].bounds];
? ? _webView= webView;
? ? self.webView.navigationDelegate = self;
? ? self.webView.allowsBackForwardNavigationGestures = YES;
? ? // 設(shè)置訪問的URL
? ? NSURL *url = [NSURL URLWithString:@"http://www.reibang.com/writer#/notebooks/22697260/notes/26857069"];
? ? // 根據(jù)URL創(chuàng)建請(qǐng)求
? ? NSURLRequest *request = [NSURLRequest requestWithURL:url];
? ? [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];
? ? // WKWebView加載請(qǐng)求
? ? [_webView loadRequest:request];
? ? // 將WKWebView添加到視圖
? ? [self.viewaddSubview:_webView];? ?
? ? [self.webView addObserver:self forKeyPath:@"estimatedProgress" options:0 context:nil];
????/**添加title觀察者*/
? ? [self.webView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:nil];
}
/**
?* 初始化進(jìn)度條
?*/
- (void)setupProgressView {
????UIProgressView *progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
? ? _progressView= progressView;
? ? 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 {
? ? ? ? //開始加載的時(shí)候驱负,讓進(jìn)度條顯示
? ? self.progressView.hidden = NO;
}
- (void)webView:(WKWebView*)webView didCommitNavigation:(WKNavigation*)navigation {
}
- (void)webView:(WKWebView*)webView didFinishNavigation:(WKNavigation*)navigation {
}
#pragma mark - KVO
//kvo 監(jiān)聽進(jìn)度
-(void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object? change:(NSDictionary *)change context:(void*)context {
? ? if([keyPathisEqualToString:@"estimatedProgress"] ) {
? ? ? ? [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"]) {//網(wǎng)頁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:@"title"];
? ? [self.webView removeObserver:self forKeyPath:@"estimatedProgress"];
? ? self.webView.navigationDelegate = nil; ???
? ? [self.webView setUIDelegate:nil];
}
@end