// // NYWebViewController.swift // JSJP_Student_sw // // Created by Ning.ge on 2023/6/1. // import UIKit import WebKit import RxSwift final class NYWebViewController: BaseViewController { private var link: String private lazy var webView: WKWebView = { let webView = WKWebView(frame: .zero) return webView }() init(link:String) { self.link = link super.init() } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func setupConstraints() { webView.snp.makeConstraints { (make) in make.edges.equalToSuperview() } // webView.snp.makeConstraints { (make) in // make.top.equalTo(self.view).offset(88.f) // make.left.right.bottom.equalTo(self.view) // } } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) navigationController?.navigationBar.isHidden = false // self.navigationController?.setNavigationBarHidden(false, animated: true) } override func viewDidLoad() { super.viewDidLoad() view.addSubview(webView) setupWebView() } private func setupWebView() { webView.navigationDelegate = self webView.allowsBackForwardNavigationGestures = true if let linkURL = URL(string: link) { webView.load(URLRequest(url: linkURL)) } } private func adjustScrollViewTop() { if #available(iOS 11, *) { webView.scrollView.contentInsetAdjustmentBehavior = .never }else{ self.automaticallyAdjustsScrollViewInsets = false } } } extension NYWebViewController: WKNavigationDelegate { func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { self.setLeftItems() self.setRightItems() title = webView.title //webView.evaluateJavaScript("document.getElementsByClassName(\"top-holder\")[0].hidden = true;", completionHandler: nil) } func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { NYSwToaster.show("被禁止访问了???") } func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if navigationAction.targetFrame == nil { webView.load(navigationAction.request) } decisionHandler(.allow) } } //MARK: - setBarButtonItem extension NYWebViewController { private func setLeftItems() { let backItem = UIBarButtonItem(image: NYImage.Home.back?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(back)) let closeButton = UIButton(type: .custom) closeButton.setTitle("关闭", for: .normal) closeButton.setTitleColor(UIColor.db_white, for: .normal) closeButton.titleLabel?.font = NYFont.SysFont.sys_16 closeButton.rx.tap.subscribe(onNext: {[unowned self] _ in self.close() }).disposed(by: disposeBag) let closeItem = UIBarButtonItem(customView: closeButton) self.navigationItem.leftBarButtonItems = [backItem,closeItem] } private func setRightItems() { let moreImage = NYImage.Home.more?.with(color: UIColor.db_white) let moreItem = UIBarButtonItem(image:moreImage?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(more)) self.navigationItem.rightBarButtonItem = moreItem } @objc private func back() { if webView.canGoBack { webView.goBack() }else{ self.navigationController?.popViewController(animated: true) } } private func close() { self.navigationController?.popViewController(animated: true) } @objc private func more() { } }