NYWebViewController.swift 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. //
  2. // NYWebViewController.swift
  3. // JSJP_Student_sw
  4. //
  5. // Created by Ning.ge on 2023/6/1.
  6. //
  7. import UIKit
  8. import WebKit
  9. import RxSwift
  10. final class NYWebViewController: BaseViewController {
  11. private var link: String
  12. private lazy var webView: WKWebView = {
  13. let webView = WKWebView(frame: .zero)
  14. return webView
  15. }()
  16. init(link:String) {
  17. self.link = link
  18. super.init()
  19. }
  20. required init?(coder aDecoder: NSCoder) {
  21. fatalError("init(coder:) has not been implemented")
  22. }
  23. override func setupConstraints() {
  24. webView.snp.makeConstraints { (make) in
  25. make.edges.equalToSuperview()
  26. }
  27. // webView.snp.makeConstraints { (make) in
  28. // make.top.equalTo(self.view).offset(88.f)
  29. // make.left.right.bottom.equalTo(self.view)
  30. // }
  31. }
  32. override func viewWillAppear(_ animated: Bool) {
  33. super.viewWillAppear(animated)
  34. navigationController?.navigationBar.isHidden = false
  35. // self.navigationController?.setNavigationBarHidden(false, animated: true)
  36. }
  37. override func viewDidLoad() {
  38. super.viewDidLoad()
  39. view.addSubview(webView)
  40. setupWebView()
  41. }
  42. private func setupWebView() {
  43. webView.navigationDelegate = self
  44. webView.allowsBackForwardNavigationGestures = true
  45. if let linkURL = URL(string: link) {
  46. webView.load(URLRequest(url: linkURL))
  47. }
  48. }
  49. private func adjustScrollViewTop() {
  50. if #available(iOS 11, *) {
  51. webView.scrollView.contentInsetAdjustmentBehavior = .never
  52. }else{
  53. self.automaticallyAdjustsScrollViewInsets = false
  54. }
  55. }
  56. }
  57. extension NYWebViewController: WKNavigationDelegate {
  58. func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
  59. self.setLeftItems()
  60. self.setRightItems()
  61. title = webView.title
  62. //webView.evaluateJavaScript("document.getElementsByClassName(\"top-holder\")[0].hidden = true;", completionHandler: nil)
  63. }
  64. func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
  65. NYSwToaster.show("被禁止访问了???")
  66. }
  67. func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
  68. if navigationAction.targetFrame == nil {
  69. webView.load(navigationAction.request)
  70. }
  71. decisionHandler(.allow)
  72. }
  73. }
  74. //MARK: - setBarButtonItem
  75. extension NYWebViewController {
  76. private func setLeftItems() {
  77. let backItem = UIBarButtonItem(image: NYImage.Home.back?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(back))
  78. let closeButton = UIButton(type: .custom)
  79. closeButton.setTitle("关闭", for: .normal)
  80. closeButton.setTitleColor(UIColor.db_white, for: .normal)
  81. closeButton.titleLabel?.font = NYFont.SysFont.sys_16
  82. closeButton.rx.tap.subscribe(onNext: {[unowned self] _ in
  83. self.close()
  84. }).disposed(by: disposeBag)
  85. let closeItem = UIBarButtonItem(customView: closeButton)
  86. self.navigationItem.leftBarButtonItems = [backItem,closeItem]
  87. }
  88. private func setRightItems() {
  89. let moreImage = NYImage.Home.more?.with(color: UIColor.db_white)
  90. let moreItem = UIBarButtonItem(image:moreImage?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(more))
  91. self.navigationItem.rightBarButtonItem = moreItem
  92. }
  93. @objc private func back() {
  94. if webView.canGoBack {
  95. webView.goBack()
  96. }else{
  97. self.navigationController?.popViewController(animated: true)
  98. }
  99. }
  100. private func close() {
  101. self.navigationController?.popViewController(animated: true)
  102. }
  103. @objc private func more() {
  104. }
  105. }