1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- //
- // SwiftModalWebVC.swift
- //
- // Created by Myles Ringle on 24/06/2015.
- // Transcribed from code used in SVWebViewController.
- // Copyright (c) 2015 Myles Ringle & Oliver Letterer. All rights reserved.
- //
- import UIKit
- @objc public protocol SwiftModalWebVCDelegate: class {
- @objc func didStartLoading()
- @objc func didReceiveServerRedirectForProvisionalNavigation(url: URL)
- @objc func didFinishLoading(success: Bool, url: URL)
- @objc func webDismiss()
- }
- public class SwiftModalWebVC: UINavigationController {
-
- @objc public weak var delegateWeb: SwiftModalWebVCDelegate?
-
- weak var webViewDelegate: UIWebViewDelegate? = nil
-
- @objc public convenience init(urlString: String, colorText: UIColor, colorDoneButton: UIColor, doneButtonVisible: Bool, hideToolbar: Bool = false) {
- let url = URL(string: urlString)!
- self.init(request: URLRequest(url: url), colorText: colorText, colorDoneButton: colorDoneButton, doneButtonVisible: doneButtonVisible, hideToolbar: hideToolbar)
- }
-
- public init(request: URLRequest, colorText: UIColor = UIColor.white, colorDoneButton: UIColor = UIColor.black, doneButtonVisible: Bool = false, hideToolbar: Bool = false) {
-
- let webViewController = SwiftWebVC(aRequest: request, hideToolbar: hideToolbar)
- webViewController.storedStatusColor = UINavigationBar.appearance().barStyle
-
- super.init(rootViewController: webViewController)
- let doneButton = UIBarButtonItem(image: SwiftWebVC.bundledImage(named: "SwiftWebVCDismiss"), style: UIBarButtonItem.Style.plain, target: webViewController, action: #selector(SwiftWebVC.doneButtonTapped))
-
- doneButton.tintColor = colorDoneButton
- webViewController.buttonColor = colorText
- webViewController.titleColor = colorText
- webViewController.view.backgroundColor = UIColor.clear
-
- UINavigationBar.appearance().barStyle = UIBarStyle.default
-
- if (doneButtonVisible == true) {
- if (UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.pad) {
- webViewController.navigationItem.leftBarButtonItem = doneButton
- }
- else {
- webViewController.navigationItem.rightBarButtonItem = doneButton
- }
- }
- webViewController.delegate = self
- }
-
- override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
- super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
- }
-
- required public init(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- override public func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(false)
- }
-
- public override func viewWillDisappear(_ animated: Bool) {
- super.viewDidDisappear(animated)
- }
- public override func viewDidDisappear(_ animated: Bool) {
- super.viewDidDisappear(animated)
- }
- }
- extension SwiftModalWebVC: SwiftWebVCDelegate {
-
- public func didStartLoading() {
- self.delegateWeb?.didStartLoading()
- }
-
- public func didReceiveServerRedirectForProvisionalNavigation(url: URL) {
- self.delegateWeb?.didReceiveServerRedirectForProvisionalNavigation(url: url)
- }
-
- public func didFinishLoading(success: Bool) {
- //print("Finished loading. Success: \(success).")
- }
-
- public func didFinishLoading(success: Bool, url: URL) {
- self.delegateWeb?.didFinishLoading(success: success, url: url)
- }
-
- public func webDismiss() {
- self.delegateWeb?.webDismiss()
- }
- }
|