// // ZCBaseWebVC.m // HuaKaiChat // // Created by 张灿 on 2017/6/28. // Copyright © 2017年 huakai. All rights reserved. // #import "ZCBaseWebVC.h" #import "ZCBaseWebView.h" @interface ZCBaseWebVC () @property (nonatomic, strong) UIProgressView *progressView; @property (nonatomic, strong) ZCBaseWebView *webView; @property (nonatomic, strong) UIButton *closeBtn; @end @implementation ZCBaseWebVC - (ZCBaseWebView *)webView { if (!_webView) { CGRect frame = CGRectMake(0, NavBarHeight, KScreenWidth,KScreenHeight-NavBarHeight); if (self.needHideNav) { frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight - TabbarHeight); } _webView = [[ZCBaseWebView alloc] initWithFrame:frame]; _webView.contentUrl = self.contentUrl; // _webView.delegate = self; _webView.nav = self.navigationController; } return _webView; } - (void)viewDidLoad { [super viewDidLoad]; self.automaticallyAdjustsScrollViewInsets = NO; // self.view.backgroundColor = [UIColor clearColor]; UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; backBtn.frame = CGRectMake(0.0f, 0.0f, 20.0f, 44.0f); [backBtn setImage:[UIImage imageNamed:@"vqu_images_navigation_back_black"] forState:UIControlStateNormal]; [backBtn setImage:[UIImage imageNamed:@"vqu_images_navigation_back_black"] forState:UIControlStateHighlighted]; [backBtn addTarget:self action:@selector(backBtnClick) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *backBarItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn]; UIButton *closeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; closeBtn.frame = CGRectMake(0.0f, 0.0f, 34.0f, 44.0f); [closeBtn setImage:[UIImage imageNamed:@"vqu_images_L_live_window_close1"] forState:UIControlStateNormal]; [closeBtn setImage:[UIImage imageNamed:@"vqu_images_L_live_window_close1"] forState:UIControlStateHighlighted]; [closeBtn addTarget:self action:@selector(youpaifcloseBtnClick) forControlEvents:UIControlEventTouchUpInside]; closeBtn.hidden = YES; self.closeBtn = closeBtn; UIBarButtonItem *closeBarItem = [[UIBarButtonItem alloc] initWithCustomView:closeBtn]; self.navigationItem.leftBarButtonItems = @[backBarItem,closeBarItem]; [self setLeftBarButtonWithCustomView:backBtn]; [self.view addSubview:self.webView]; self.webView.delegate = self; self.webView.scrollView.bounces = NO; self.webView.hidden = YES; if (!self.needHideNav) { [self initProgress]; [self.view addSubview:self.progressView]; } self.webView.realWebView.allowsBackForwardNavigationGestures = YES; [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.contentUrl]]]; if (@available(iOS 11.0, *)) { self.webView.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; } } - (void)backBtnClick{ if (self.webView.realWebView.canGoBack) { [self.webView.realWebView goBack]; }else{ [self youpaifcloseBtnClick]; } } - (void)youpaifcloseBtnClick{ [self.navigationController popViewControllerAnimated:YES]; } - (void)reloadWebView{ self.webView.contentUrl = self.contentUrl; } - (void)initProgress { CGRect barFrame = CGRectMake(0, NavBarHeight, KScreenWidth, 2.0f); self.progressView = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleDefault]; self.progressView.tintColor = [UIColor greenColor]; self.progressView.frame = barFrame; self.progressView.transform = CGAffineTransformMakeScale(1.0f,2.0f); self.progressView.backgroundColor = [UIColor clearColor]; self.progressView.trackTintColor=[UIColor clearColor]; self.progressView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin; [self.progressView setProgress:0 animated:NO]; } #pragma mark hxwebview 的代理方法 -(void)webViewDidFinishLoad:(ZCBaseWebView *)webView { self.navigationItem.title = self.webView.title; [self.webView performSelector:@selector(setHidden:) withObject:@(NO) afterDelay:0.5f]; if (self.webView.realWebView.canGoBack) { self.closeBtn.hidden = NO; }else{ self.closeBtn.hidden = YES; } } -(void)webView:(ZCBaseWebView *)webView updateProgress:(double)progress { [self.progressView setProgress:progress animated:YES]; if (progress>=1.f) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.progressView setProgress:0 animated:NO]; }); } } -(void)webView:(ZCBaseWebView *)webView didFailLoadWithError:(NSError *)error { NSLog(@"error:%@",error); } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:self.needHideNav animated:animated]; // 禁用返回手势 // self.sx_disableInteractivePop = YES; } -(void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; // 开启返回手势 self.sx_disableInteractivePop = NO; if (self.needHideNav) { [self.navigationController setNavigationBarHidden:!self.needHideNav animated:animated]; } } - (void)dealloc{ [_progressView removeFromSuperview]; [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]]; } @end