diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2020-01-07 14:03:37 +0100 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2020-01-08 15:17:24 +0100 |
| commit | 3fdad873898df5da64c14ea07e768b175b52bacf (patch) | |
| tree | 5bf1b0379f590dac652eb58c044b8d6a3107e2c4 | |
| parent | 98d4998f21b168ffd30dd86d67dfb14ef0a02df4 (diff) | |
| download | mullvadvpn-3fdad873898df5da64c14ea07e768b175b52bacf.tar.xz mullvadvpn-3fdad873898df5da64c14ea07e768b175b52bacf.zip | |
Rework spinner interface and expose thickness via IB
| -rw-r--r-- | ios/MullvadVPN/LoginViewController.swift | 4 | ||||
| -rw-r--r-- | ios/MullvadVPN/SelectLocationController.swift | 6 | ||||
| -rw-r--r-- | ios/MullvadVPN/SpinnerActivityIndicatorView.swift | 26 |
3 files changed, 16 insertions, 20 deletions
diff --git a/ios/MullvadVPN/LoginViewController.swift b/ios/MullvadVPN/LoginViewController.swift index e44ac1e454..30877664e8 100644 --- a/ios/MullvadVPN/LoginViewController.swift +++ b/ios/MullvadVPN/LoginViewController.swift @@ -171,7 +171,7 @@ class LoginViewController: UIViewController, UITextFieldDelegate, RootContainmen // controller. switch loginState { case .authenticating: - activityIndicator.isAnimating = true + activityIndicator.startAnimating() // Fallthrough to make sure that the settings button is disabled // in .authenticating and .success cases. @@ -182,7 +182,7 @@ class LoginViewController: UIViewController, UITextFieldDelegate, RootContainmen case .default, .failure: rootContainerController?.headerBarSettingsButton.isEnabled = true - activityIndicator.isAnimating = false + activityIndicator.stopAnimating() } updateDisplayedMessage() diff --git a/ios/MullvadVPN/SelectLocationController.swift b/ios/MullvadVPN/SelectLocationController.swift index f58d0c5c78..3a1d90d6ea 100644 --- a/ios/MullvadVPN/SelectLocationController.swift +++ b/ios/MullvadVPN/SelectLocationController.swift @@ -110,11 +110,11 @@ class SelectLocationController: UITableViewController { }) .receive(on: DispatchQueue.main) .handleEvents(receiveSubscription: { _ in - self.activityIndicator.isAnimating = true + self.activityIndicator.startAnimating() }, receiveCompletion: { _ in - self.activityIndicator.isAnimating = false + self.activityIndicator.stopAnimating() }, receiveCancel: { - self.activityIndicator.isAnimating = false + self.activityIndicator.stopAnimating() }) .sink(receiveCompletion: { (completion) in if case .failure(let error) = completion { diff --git a/ios/MullvadVPN/SpinnerActivityIndicatorView.swift b/ios/MullvadVPN/SpinnerActivityIndicatorView.swift index ea33c64024..2e8140c97f 100644 --- a/ios/MullvadVPN/SpinnerActivityIndicatorView.swift +++ b/ios/MullvadVPN/SpinnerActivityIndicatorView.swift @@ -14,7 +14,7 @@ private let kAnimationDuration = 0.6 @IBDesignable class SpinnerActivityIndicatorView: UIView { /// Thickness of the front and back circles - var thickness: CGFloat = 6 { + @IBInspectable var thickness: CGFloat = 6 { didSet { setLayersThickness() } @@ -34,17 +34,7 @@ private let kAnimationDuration = 0.6 } } - @IBInspectable var isAnimating: Bool = false { - didSet { - guard oldValue != isAnimating else { return } - - if isAnimating { - startAnimating() - } else { - stopAnimating() - } - } - } + private(set) var isAnimating = false fileprivate let frontCircle = CAShapeLayer() fileprivate let backCircle = CAShapeLayer() @@ -88,18 +78,24 @@ private let kAnimationDuration = 0.6 setFrontCircleLayerColor() } - // MARK: - Private + func startAnimating() { + guard !isAnimating else { return } + isAnimating = true - private func startAnimating() { isHidden = false addAnimation() } - private func stopAnimating() { + func stopAnimating() { + guard isAnimating else { return } + isAnimating = false + isHidden = true removeAnimation() } + // MARK: - Private + private func commonInit() { registerForAppStateNotifications() |
