SwiftModalWebVC.swift 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. //
  2. // SwiftModalWebVC.swift
  3. //
  4. // Created by Myles Ringle on 24/06/2015.
  5. // Transcribed from code used in SVWebViewController.
  6. // Copyright (c) 2015 Myles Ringle & Oliver Letterer. All rights reserved.
  7. //
  8. import UIKit
  9. @objc public protocol SwiftModalWebVCDelegate: class {
  10. @objc func didStartLoading()
  11. @objc func didReceiveServerRedirectForProvisionalNavigation(url: URL)
  12. @objc func didFinishLoading(success: Bool, url: URL)
  13. @objc func webDismiss()
  14. }
  15. public class SwiftModalWebVC: UINavigationController {
  16. @objc public weak var delegateWeb: SwiftModalWebVCDelegate?
  17. weak var webViewDelegate: UIWebViewDelegate? = nil
  18. @objc public convenience init(urlString: String, colorText: UIColor, colorDoneButton: UIColor, doneButtonVisible: Bool, hideToolbar: Bool = false) {
  19. let url = URL(string: urlString)!
  20. self.init(request: URLRequest(url: url), colorText: colorText, colorDoneButton: colorDoneButton, doneButtonVisible: doneButtonVisible, hideToolbar: hideToolbar)
  21. }
  22. public init(request: URLRequest, colorText: UIColor = UIColor.white, colorDoneButton: UIColor = UIColor.black, doneButtonVisible: Bool = false, hideToolbar: Bool = false) {
  23. let webViewController = SwiftWebVC(aRequest: request, hideToolbar: hideToolbar)
  24. webViewController.storedStatusColor = UINavigationBar.appearance().barStyle
  25. super.init(rootViewController: webViewController)
  26. let doneButton = UIBarButtonItem(image: SwiftWebVC.bundledImage(named: "SwiftWebVCDismiss"), style: UIBarButtonItem.Style.plain, target: webViewController, action: #selector(SwiftWebVC.doneButtonTapped))
  27. doneButton.tintColor = colorDoneButton
  28. webViewController.buttonColor = colorText
  29. webViewController.titleColor = colorText
  30. webViewController.view.backgroundColor = UIColor.clear
  31. UINavigationBar.appearance().barStyle = UIBarStyle.default
  32. if (doneButtonVisible == true) {
  33. if (UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.pad) {
  34. webViewController.navigationItem.leftBarButtonItem = doneButton
  35. }
  36. else {
  37. webViewController.navigationItem.rightBarButtonItem = doneButton
  38. }
  39. }
  40. webViewController.delegate = self
  41. }
  42. override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
  43. super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
  44. }
  45. required public init(coder aDecoder: NSCoder) {
  46. fatalError("init(coder:) has not been implemented")
  47. }
  48. override public func viewWillAppear(_ animated: Bool) {
  49. super.viewWillAppear(false)
  50. }
  51. public override func viewWillDisappear(_ animated: Bool) {
  52. super.viewDidDisappear(animated)
  53. }
  54. public override func viewDidDisappear(_ animated: Bool) {
  55. super.viewDidDisappear(animated)
  56. }
  57. }
  58. extension SwiftModalWebVC: SwiftWebVCDelegate {
  59. public func didStartLoading() {
  60. self.delegateWeb?.didStartLoading()
  61. }
  62. public func didReceiveServerRedirectForProvisionalNavigation(url: URL) {
  63. self.delegateWeb?.didReceiveServerRedirectForProvisionalNavigation(url: url)
  64. }
  65. public func didFinishLoading(success: Bool) {
  66. //print("Finished loading. Success: \(success).")
  67. }
  68. public func didFinishLoading(success: Bool, url: URL) {
  69. self.delegateWeb?.didFinishLoading(success: success, url: url)
  70. }
  71. public func webDismiss() {
  72. self.delegateWeb?.webDismiss()
  73. }
  74. }