NYWebViewController.swift 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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. }
  28. override func viewWillAppear(_ animated: Bool) {
  29. super.viewWillAppear(animated)
  30. self.navigationController?.setNavigationBarHidden(false, animated: true)
  31. }
  32. override func viewDidLoad() {
  33. super.viewDidLoad()
  34. view.addSubview(webView)
  35. setupWebView()
  36. }
  37. private func setupWebView() {
  38. webView.navigationDelegate = self
  39. webView.allowsBackForwardNavigationGestures = true
  40. if let linkURL = URL(string: link) {
  41. webView.load(URLRequest(url: linkURL))
  42. }
  43. }
  44. private func adjustScrollViewTop() {
  45. if #available(iOS 11, *) {
  46. webView.scrollView.contentInsetAdjustmentBehavior = .never
  47. }else{
  48. self.automaticallyAdjustsScrollViewInsets = false
  49. }
  50. }
  51. }
  52. extension NYWebViewController: WKNavigationDelegate {
  53. func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
  54. self.setLeftItems()
  55. self.setRightItems()
  56. title = webView.title
  57. //webView.evaluateJavaScript("document.getElementsByClassName(\"top-holder\")[0].hidden = true;", completionHandler: nil)
  58. }
  59. func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
  60. NYSwToaster.show("被禁止访问了???")
  61. }
  62. func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
  63. if navigationAction.targetFrame == nil {
  64. webView.load(navigationAction.request)
  65. }
  66. decisionHandler(.allow)
  67. }
  68. }
  69. //MARK: - setBarButtonItem
  70. extension NYWebViewController {
  71. private func setLeftItems() {
  72. let backItem = UIBarButtonItem(image: NYImage.Home.back?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(back))
  73. let closeButton = UIButton(type: .custom)
  74. closeButton.setTitle("关闭", for: .normal)
  75. closeButton.setTitleColor(UIColor.db_white, for: .normal)
  76. closeButton.titleLabel?.font = NYFont.SysFont.sys_16
  77. closeButton.rx.tap.subscribe(onNext: {[unowned self] _ in
  78. self.close()
  79. }).disposed(by: disposeBag)
  80. let closeItem = UIBarButtonItem(customView: closeButton)
  81. self.navigationItem.leftBarButtonItems = [backItem,closeItem]
  82. }
  83. private func setRightItems() {
  84. let moreImage = NYImage.Home.more?.with(color: UIColor.db_white)
  85. let moreItem = UIBarButtonItem(image:moreImage?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(more))
  86. self.navigationItem.rightBarButtonItem = moreItem
  87. }
  88. @objc private func back() {
  89. if webView.canGoBack {
  90. webView.goBack()
  91. }else{
  92. self.navigationController?.popViewController(animated: true)
  93. }
  94. }
  95. private func close() {
  96. self.navigationController?.popViewController(animated: true)
  97. }
  98. @objc private func more() {
  99. }
  100. }