https://github.com/feihuang89/FHWebView
网上找的第三方webview,FHWebView,作者说的挺牛逼,就是不知道怎么实现出来
#import "FHWebManager.h"
#import "FHWebViewProgressView.h"
#import "UIViewController+NavgationBar.h" //在作者demo中拷进项目
@interface PersonalViewController ()<FHWebManagerDelegate>
@property (nonatomic, strong) FHWebManager *webManager;
@property (nonatomic, strong) FHWebViewProgressView *webProgress;
@end
-(void)dealloc
{
[self.webManager removeAllScriptMessageHandler];
NSLog(@"WKWebViewController页面销毁");
}
-(FHWebManager *)webManager
{
if (!_webManager) {
_webManager = [[FHWebManager alloc] init];
}
return _webManager;
}
-(WKWebView *)webView
{
return self.webManager.webView;
}
-(NSMutableArray *)urlArray
{
return self.webManager.urlArray;
}
-(void)controlTitle:(NSDictionary *)dict{
}
-(void)controlRightInfo:(NSDictionary *)dict{
}
-(void)controlRight:(NSDictionary *)dict{
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.automaticallyAdjustsScrollViewInsets = YES;
//设置导航栏
[self setNavBarType:NavBarTypeDefault];
[self.webManager bindWKWebViewWithFrame:CGRectMake(0, 40, kViewWidth, kViewHeight - 40) delegate:self];
self.webProgress = [[FHWebViewProgressView alloc]initWithFrame:CGRectMake(kViewWidth / 2, kViewHeight / 2, 50, 50)];
// self.webProgress setFadeOutDelay:nstim
[self.view addSubview:self.webProgress];
[self.webManager removeWebkitCache];
[self sendRequest];
}
-(void)sendRequest
{
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
[request setHTTPMethod:@"GET"];
[self.webView loadRequest:request];
}
#pragma mark - FHWebManagerDelegate
-(BOOL)webView:(WKWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(WKNavigationType)navigationType
{
return YES;
}
-(void)webViewDidStartLoad:(WKWebView *)webView
{
self.navigationItem.title = self.webView.title ;
// self.webManager setProgressView:[FHWebViewProgressView ]
NSLog(@"%s",__func__);
[self.webProgress setProgress:0.5 animated:YES];
}
-(void)webViewDidFinishLoad:(WKWebView *)webView
{
NSLog(@"%s",__func__);
// [self.navigationController setNavigationBarHidden:YES];
self.navigationItem.title = self.webView.title ;
}
-(void)webView:(WKWebView *)webView didFailLoadWithError:(NSError *)error
{
NSLog(@"%s:%@",__func__,error.description);
}
#pragma mark - private function
-(void)leftBtnNavLeftTypeBackClick:(UIButton *)btn
{
if (self.urlArray.count > 1) {
//显示关闭按钮
[self setNavLeftSecondViewWithNavLeftType:NavLeftTypeClose andCustomView:nil];
[self.urlArray removeLastObject];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:self.urlArray.lastObject cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
[request setHTTPMethod:@"GET"];
[self.webView loadRequest:request];
}else{
//隐藏关闭按钮
[self setNavLeftSecondViewWithNavLeftType:NavLeftTypeNone andCustomView:nil];
[self.navigationController popViewControllerAnimated:YES];
}
}
-(void)leftBtnNavLeftTypeCloseClick:(UIButton *)btn
{
//隐藏关闭按钮
[self setNavLeftSecondViewWithNavLeftType:NavLeftTypeNone andCustomView:nil];
[self.navigationController popViewControllerAnimated:YES];
}
#pragma mark - JS交互
- (void)controlLeft:(NSDictionary *)dict
{
NSLog(@"%@",dict);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}