diff --git a/Sources/Earthquake Network/Controllers/EQNBaseViewController.h b/Sources/Earthquake Network/Controllers/EQNBaseViewController.h index 744789e..62afdbd 100644 --- a/Sources/Earthquake Network/Controllers/EQNBaseViewController.h +++ b/Sources/Earthquake Network/Controllers/EQNBaseViewController.h @@ -14,6 +14,7 @@ NS_ASSUME_NONNULL_BEGIN @property (weak, nonatomic, nullable, readonly) UIView *bannerContainerView; @property (weak, nonatomic) IBOutlet NSLayoutConstraint *bannerContainerHeightConstraint; +@property (nonatomic, readonly) BOOL isBannerVisible; - (void)refreshUI; diff --git a/Sources/Earthquake Network/Controllers/EQNBaseViewController.m b/Sources/Earthquake Network/Controllers/EQNBaseViewController.m index f8eb7c7..91527b9 100644 --- a/Sources/Earthquake Network/Controllers/EQNBaseViewController.m +++ b/Sources/Earthquake Network/Controllers/EQNBaseViewController.m @@ -17,6 +17,13 @@ @implementation EQNBaseViewController +#pragma mark - Accessories + +- (BOOL)isBannerVisible +{ + return ![EQNPurchaseUtility isProVersionEnabled]; +} + #pragma mark - View Lifecycle - (void)viewDidLoad @@ -52,7 +59,7 @@ - (void)handleAdBanner { // ad banner mut be displayed only for non pro users - if ([EQNPurchaseUtility isProVersionEnabled]) { + if (!self.isBannerVisible) { [self hideAdBanner]; return; } diff --git a/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicNetworksMapDetailViewController.swift b/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicNetworksMapDetailViewController.swift index 44be2e5..b5b2f2f 100644 --- a/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicNetworksMapDetailViewController.swift +++ b/Sources/Earthquake Network/Controllers/Seismic Networks/SeismicNetworksMapDetailViewController.swift @@ -17,9 +17,9 @@ class SeismicNetworksMapDetailViewController: EQNBaseMapViewController { // MARK: - State - override var availableFilters: [EQNFiltroMappa] { - // trick to show filtersView - [ .unGiorno ] + override var isFilterViewVisible: Bool { + // a custom filter view id displayed + true } weak var delegate: SeismicNetworksMapDetailViewControllerDelegate? @@ -33,7 +33,7 @@ class SeismicNetworksMapDetailViewController: EQNBaseMapViewController { private lazy var seismicFiltersView: UIView = { let view = UIView() view.translatesAutoresizingMaskIntoConstraints = false - view.backgroundColor = .lightGray + view.backgroundColor = AppTheme.Colors.lightGray // label with current selecte filter view.addSubview(seismicsFilterLabel) diff --git a/Sources/Earthquake Network/Controllers/Shared/EQNBaseMapViewController.swift b/Sources/Earthquake Network/Controllers/Shared/EQNBaseMapViewController.swift index f080ee6..d4c3022 100644 --- a/Sources/Earthquake Network/Controllers/Shared/EQNBaseMapViewController.swift +++ b/Sources/Earthquake Network/Controllers/Shared/EQNBaseMapViewController.swift @@ -12,14 +12,22 @@ import MapKit class EQNBaseMapViewController: EQNBaseViewController, MKMapViewDelegate { + /// Current filter var filter = EQNFiltroMappa.unGiorno { didSet { updateUI() } } + /// Available filters var availableFilters: [EQNFiltroMappa] { [.unGiorno, .dodiciOre, .seiOre, .dueOre, .unOra, .dieciMinuti] } + /// If `true`, the filter view is visible. Could be overridden by a subclass with a custom filter view + var isFilterViewVisible: Bool { + !availableFilters.isEmpty + } + + // MARK: - Internal /// Annotations displayed on the map private var mapAnnotations = [MKAnnotation]() @@ -57,7 +65,7 @@ class EQNBaseMapViewController: EQNBaseViewController, MKMapViewDelegate { lazy var filtersView: UIView = { let view = UIView() view.translatesAutoresizingMaskIntoConstraints = false - view.backgroundColor = .lightGray + view.backgroundColor = AppTheme.Colors.lightGray // label with current selecte filter view.addSubview(filterLabel) @@ -106,13 +114,11 @@ class EQNBaseMapViewController: EQNBaseViewController, MKMapViewDelegate { // MARK: - Private private func setupUI() { - let isFilterVisible = !availableFilters.isEmpty - view.backgroundColor = .white view.addSubview(mapView) view.addSubview(closeButton) view.addSubview(containerView) - if isFilterVisible { + if isFilterViewVisible { view.addSubview(filtersView) } @@ -124,18 +130,21 @@ class EQNBaseMapViewController: EQNBaseViewController, MKMapViewDelegate { bannerContainerHeightConstraint = containerView.heightAnchor.constraint(equalToConstant: 55.0) bannerContainerHeightConstraint?.isActive = true - if isFilterVisible { - view.backgroundColor = filtersView.backgroundColor // trick to simulate a bigger filters view + if isFilterViewVisible { filtersView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true filtersView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true filtersView.bottomAnchor.constraint(equalTo: containerView.topAnchor).isActive = true filtersView.heightAnchor.constraint(equalToConstant: 40.0).isActive = true } + if isFilterViewVisible && !isBannerVisible { + view.backgroundColor = filtersView.backgroundColor // trick to simulate a bigger filters view + } + mapView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true mapView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true mapView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true - mapView.bottomAnchor.constraint(equalTo: (isFilterVisible ? filtersView : containerView).topAnchor).isActive = true + mapView.bottomAnchor.constraint(equalTo: (isFilterViewVisible ? filtersView : containerView).topAnchor).isActive = true } // MARK: - View Lifecycle diff --git a/Sources/Earthquake Network/Resources/Colors.xcassets/Gray (light).colorset/Contents.json b/Sources/Earthquake Network/Resources/Colors.xcassets/Gray (light).colorset/Contents.json new file mode 100644 index 0000000..08e0d8b --- /dev/null +++ b/Sources/Earthquake Network/Resources/Colors.xcassets/Gray (light).colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xCA", + "green" : "0xCA", + "red" : "0xCA" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sources/Earthquake Network/UI/AppTheme.swift b/Sources/Earthquake Network/UI/AppTheme.swift index b1969a2..6f6249a 100644 --- a/Sources/Earthquake Network/UI/AppTheme.swift +++ b/Sources/Earthquake Network/UI/AppTheme.swift @@ -18,6 +18,7 @@ class AppTheme: NSObject { static let green = UIColor(named: "Green")! static let gray = UIColor(named: "Gray")! static let darkGray = UIColor(named: "Gray (dark)")! + static let lightGray = UIColor(named: "Gray (light)")! } static let shared = AppTheme()