From 9f506c879f0faefc0626e9ed5b555887d37ae99c Mon Sep 17 00:00:00 2001 From: James Magahern Date: Tue, 28 Jul 2020 11:37:10 -0700 Subject: [PATCH] Stop/reload button --- .../Browser View/BrowserViewController.swift | 6 +++++- SBrowser/Browser View/URLBar.swift | 19 ++++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/SBrowser/Browser View/BrowserViewController.swift b/SBrowser/Browser View/BrowserViewController.swift index 093613d..f65fe0e 100644 --- a/SBrowser/Browser View/BrowserViewController.swift +++ b/SBrowser/Browser View/BrowserViewController.swift @@ -40,7 +40,11 @@ class BrowserViewController: UIViewController, // Refresh button toolbarController.urlBar.refreshButton.addAction(UIAction(handler: { action in - webView.reload() + if webView.isLoading { + webView.stopLoading() + } else { + webView.reload() + } }), for: .touchUpInside) // Script button diff --git a/SBrowser/Browser View/URLBar.swift b/SBrowser/Browser View/URLBar.swift index f27dd5b..2221403 100644 --- a/SBrowser/Browser View/URLBar.swift +++ b/SBrowser/Browser View/URLBar.swift @@ -24,6 +24,9 @@ class URLBar: UIView private let backgroundView = UIVisualEffectView(effect: UIBlurEffect(style: .systemThickMaterial)) private let progressIndicatorView = ProgressIndicatorView() + private let refreshImage = UIImage(systemName: "arrow.clockwise") + private let stopImage = UIImage(systemName: "xmark") + convenience init() { self.init(frame: .zero) @@ -48,7 +51,7 @@ class URLBar: UIView addSubview(textField) refreshButton.tintColor = .secondaryLabel - refreshButton.setImage(UIImage(systemName: "arrow.clockwise"), for: .normal) + refreshButton.setImage(refreshImage, for: .normal) addSubview(refreshButton) } @@ -56,17 +59,19 @@ class URLBar: UIView UIView.animate(withDuration: 0.4) { switch self.loadProgress { case .complete: + self.refreshButton.setImage(self.refreshImage, for: .normal) self.progressIndicatorView.progress = 1.0 - self.progressIndicatorView.alpha = 0.0 + UIView.animate(withDuration: 0.5, delay: 0.5, options: AnimationOptions()) { + self.progressIndicatorView.alpha = 0.0 + } completion: { _ in + // Reset back to zero + self.progressIndicatorView.progress = 0.0 + } case .loading(let progress): + self.refreshButton.setImage(self.stopImage, for: .normal) self.progressIndicatorView.progress = progress self.progressIndicatorView.alpha = 1.0 } - } completion: { _ in - if case LoadProgress.complete = self.loadProgress { - // Reset back to zero - self.progressIndicatorView.progress = 0.0 - } } }