CNLiveBaseWebViewController.m 4.17 KB
//
//  CNLiveBaseWebViewController.m
//  CNLiveBaseClass
//
//  Created by CNLive-zxw on 2019/12/7.
//  Copyright © 2019 153993236@qq.com. All rights reserved.
//

#import "CNLiveBaseWebViewController.h"
#import <WebKit/WebKit.h>
#import "QMUIKit.h"
#import "CNLiveCategory.h"
#import "CNLiveWebView.h"
#import "CNLiveNavigationBar.h"

@interface CNLiveBaseWebViewController ()<CNLiveWebViewDelegate>
@property (nonatomic, strong) UIButton *closeBtn;
@property (nonatomic, assign) BOOL closeHidden;

@end

@implementation CNLiveBaseWebViewController
static const NSInteger margin = 10;

#pragma mark - 初始化
- (instancetype)initWithUrl:(NSString *)url{
    return [self initWithUrl:url title:@"" closeHidden:YES];
}
- (instancetype)initWithUrl:(NSString *)url title:(nullable NSString *)title{
    return [self initWithUrl:url title:title closeHidden:YES];
}
- (instancetype)initWithUrl:(NSString *)url title:(nullable NSString *)title closeHidden:(BOOL)closeHidden {
    self = [super init];
    if (self) {
        self.url = url;
        self.title = title;
        self.closeHidden = closeHidden;
    }
    return self;
}

#pragma mark - Setter方法
- (void)setUrl:(NSString *)url{
    if(!url||[url isEqualToString:@""]) return;
    _url = url;
}

- (NSString *)editHtml:(NSString *)url{
    return [NSString stringWithFormat:@"<div style=\"font-size:45px\">%@</div>",url];
}

#pragma mark - 生命周期
- (void)viewDidLoad {
    [super viewDidLoad];
    if ([_url hasPrefix:@"http://"]||[_url hasPrefix:@"https://"]) {
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:_url] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10.0];
        [self.webView loadRequest:request];
        
    } else {
        [self.webView loadHTMLString:[self editHtml:_url]];
    }
}

- (void)createSubViews {
    [super createSubViews];
    if(!self.closeHidden&&!self.navigationHidden){
        [self.view addSubview:self.closeBtn];
    }
    [self.view addSubview:self.webView];
}

#pragma mark - CNLiveWebViewDelegate
- (void)webView:(CNLiveWebView *)webView didFinishLoadWithURL:(NSURL *)url {
    NSLog(@"CNLiveWebViewController - didFinishLoad");
    if(self.title.length == 0){
        self.title = webView.title;
    }
}

- (void)webView:(CNLiveWebView *)webView didFailLoadWithError:(NSError *)error{

}

#pragma mark - 响应方法
//回退goBack
- (void)goBack {
    if ([self.webView canGoBack]) {
        [self.webView goBack];
    }
    else {
        [self closeDidClicked];
    }
}

//关闭pop
- (void)closeDidClicked {
    if (self.presentingViewController != nil) {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    else {
        [self.navigationController popViewControllerAnimated:YES];
    }
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

#pragma mark - 懒加载
- (UIButton *)closeBtn{
    if(!_closeBtn){
        _closeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        _closeBtn.adjustsImageWhenHighlighted = NO;
        _closeBtn.frame = CGRectMake(NavigationBarHeight+margin, StatusBarHeight, NavigationBarHeight, NavigationBarHeight);
        UIImage *image = [self getImageWithImageName:@"cnlive_black_close" bundleName:@"CNLiveCustomControl" targetClass:[CNLiveNavigationBar class]];
        [_closeBtn setImage:[image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];
        [_closeBtn addTarget:self action:@selector(closeDidClicked) forControlEvents:UIControlEventTouchUpInside];
        [_closeBtn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
        _closeBtn.hidden = self.closeHidden;
    }
    return _closeBtn;
}

- (CNLiveWebView *)webView{
    if(!_webView){
        _webView = [CNLiveWebView webViewWithFrame:CGRectMake(0, NavigationContentTop, SCREEN_WIDTH, SCREEN_HEIGHT-NavigationContentTop)];
        _webView.delegate = self;
    }
    return _webView;
}

@end