第三方webview-------FHWebView

来源:互联网 发布:睡不够是什么原因知乎 编辑:程序博客网 时间:2024/06/06 03:48

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.
}


原创粉丝点击