From 843e74c79658664fdb675af223851272126e1ccd Mon Sep 17 00:00:00 2001 From: Ilya Grechuhin Date: Wed, 13 Jul 2016 13:18:53 +0300 Subject: [PATCH] [ios] Updated compass widget position estimation. --- .../NavigationDashboard/MWMNavigationDashboardManager.h | 1 + .../NavigationDashboard/MWMNavigationDashboardManager.mm | 7 +++++++ .../NavigationDashboard/MWMNavigationInfoView.h | 1 + .../NavigationDashboard/MWMNavigationInfoView.mm | 5 +++++ iphone/Maps/Classes/Widgets/MWMMapWidgets.mm | 7 ++++++- 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.h b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.h index 5f089a448e..ea549bde14 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.h +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.h @@ -35,6 +35,7 @@ typedef NS_ENUM(NSUInteger, MWMNavigationDashboardState) { @property(weak, nonatomic, readonly) id delegate; @property(nonatomic) CGFloat topBound; @property(nonatomic) CGFloat leftBound; +@property(nonatomic, readonly) CGFloat extraCompassBottomOffset; @property(nonatomic, readonly) CGFloat height; - (instancetype)init __attribute__((unavailable("init is not available"))); diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm index dc8b7d8677..3cdf1653bb 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm @@ -238,4 +238,11 @@ using TInfoDisplays = NSHashTable<__kindof TInfoDisplay>; return _entity; } +- (CGFloat)extraCompassBottomOffset +{ + if (!_navigationInfoView) + return 0; + return self.navigationInfoView.extraCompassBottomOffset; +} + @end diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationInfoView.h b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationInfoView.h index e71b4c7734..1eeda5ea64 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationInfoView.h +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationInfoView.h @@ -3,6 +3,7 @@ @interface MWMNavigationInfoView : UIView @property(nonatomic) CGFloat leftBound; +@property(nonatomic, readonly) CGFloat extraCompassBottomOffset; @property(nonatomic, readonly) CGFloat visibleHeight; - (void)addToView:(UIView *)superview; diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationInfoView.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationInfoView.mm index e8eb57b027..f5b7a235cf 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationInfoView.mm +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationInfoView.mm @@ -358,4 +358,9 @@ BOOL defaultOrientation() [self setNeedsLayout]; } +- (CGFloat)extraCompassBottomOffset +{ + return defaultOrientation() || self.searchView.hidden ? 0 : kSearchButtonsViewHeightLandscape; +} + @end diff --git a/iphone/Maps/Classes/Widgets/MWMMapWidgets.mm b/iphone/Maps/Classes/Widgets/MWMMapWidgets.mm index edb56252b5..3a75ac71e2 100644 --- a/iphone/Maps/Classes/Widgets/MWMMapWidgets.mm +++ b/iphone/Maps/Classes/Widgets/MWMMapWidgets.mm @@ -1,4 +1,5 @@ #import "MWMMapWidgets.h" +#import "MWMNavigationDashboardManager.h" #include "drape_frontend/gui/skin.hpp" #include "std/unique_ptr.hpp" @@ -56,8 +57,12 @@ pivot -= m2::PointF(0.0, self.bottomBound * self.visualScale); break; case gui::WIDGET_COMPASS: - pivot += m2::PointF(self.leftBound, -self.bottomBound) * self.visualScale; + { + CGFloat const compassBottomBound = + self.bottomBound + [MWMNavigationDashboardManager manager].extraCompassBottomOffset; + pivot += m2::PointF(self.leftBound, -compassBottomBound) * self.visualScale; break; + } case gui::WIDGET_SCALE_LABEL: case gui::WIDGET_CHOOSE_POSITION_MARK: break;