forked from organicmaps/organicmaps
[release-74-visible-area] [ios] Updated traffic button available area estimation.
This commit is contained in:
parent
81680e025d
commit
33e9867346
9 changed files with 67 additions and 37 deletions
|
@ -36,6 +36,7 @@
|
|||
#import "MWMSideButtons.h"
|
||||
#import "MWMTableViewCell.h"
|
||||
#import "MWMTextView.h"
|
||||
#import "MWMTrafficButtonViewController.h"
|
||||
#import "MWMTypes.h"
|
||||
#import "MWMViewController.h"
|
||||
#import "Statistics.h"
|
||||
|
|
|
@ -283,16 +283,7 @@ extern NSString * const kAlohalyticsTapEventKey;
|
|||
- (void)routePreviewDidChangeFrame:(CGRect)newFrame
|
||||
{
|
||||
if (IPAD)
|
||||
{
|
||||
CGFloat const bound = newFrame.origin.x + newFrame.size.width;
|
||||
self.navigationManager.leftBound = bound;
|
||||
self.trafficButton.leftBound = bound;
|
||||
}
|
||||
else
|
||||
{
|
||||
CGFloat const bound = newFrame.origin.y + newFrame.size.height;
|
||||
self.trafficButton.topBound = bound;
|
||||
}
|
||||
self.navigationManager.leftBound = newFrame.origin.x + newFrame.size.width;
|
||||
}
|
||||
|
||||
- (void)setDisableStandbyOnRouteFollowing:(BOOL)disableStandbyOnRouteFollowing
|
||||
|
@ -475,7 +466,6 @@ extern NSString * const kAlohalyticsTapEventKey;
|
|||
return;
|
||||
_topBound = topBound;
|
||||
self.navigationManager.topBound = topBound;
|
||||
self.trafficButton.topBound = topBound;
|
||||
}
|
||||
|
||||
- (void)setLeftBound:(CGFloat)leftBound
|
||||
|
@ -484,8 +474,7 @@ extern NSString * const kAlohalyticsTapEventKey;
|
|||
return;
|
||||
if ([MWMRouter isRoutingActive])
|
||||
return;
|
||||
_leftBound = self.navigationManager.leftBound = self.menuController.leftBound =
|
||||
self.trafficButton.leftBound = leftBound;
|
||||
_leftBound = self.navigationManager.leftBound = self.menuController.leftBound = leftBound;
|
||||
}
|
||||
|
||||
- (BOOL)searchHidden { return self.searchManager.state == MWMSearchManagerStateHidden; }
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
+ (MWMTrafficButtonViewController *)controller;
|
||||
|
||||
@property(nonatomic) BOOL hidden;
|
||||
@property(nonatomic) CGFloat topBound;
|
||||
@property(nonatomic) CGFloat leftBound;
|
||||
|
||||
- (void)mwm_refreshUI;
|
||||
|
||||
+ (void)updateAvailableArea:(CGRect)frame;
|
||||
|
||||
@end
|
||||
|
|
|
@ -10,8 +10,7 @@
|
|||
|
||||
namespace
|
||||
{
|
||||
CGFloat const kTopOffset = 26;
|
||||
CGFloat const kTopShiftedOffset = 6;
|
||||
CGFloat const kTopOffset = 6;
|
||||
|
||||
NSArray<UIImage *> * imagesWithName(NSString * name)
|
||||
{
|
||||
|
@ -37,6 +36,7 @@ NSArray<UIImage *> * imagesWithName(NSString * name)
|
|||
|
||||
@property(nonatomic) NSLayoutConstraint * topOffset;
|
||||
@property(nonatomic) NSLayoutConstraint * leftOffset;
|
||||
@property(nonatomic) CGRect availableArea;
|
||||
|
||||
@end
|
||||
|
||||
|
@ -97,31 +97,15 @@ NSArray<UIImage *> * imagesWithName(NSString * name)
|
|||
[self refreshLayout];
|
||||
}
|
||||
|
||||
- (void)setTopBound:(CGFloat)topBound
|
||||
{
|
||||
if (_topBound == topBound)
|
||||
return;
|
||||
_topBound = topBound;
|
||||
[self refreshLayout];
|
||||
}
|
||||
|
||||
- (void)setLeftBound:(CGFloat)leftBound
|
||||
{
|
||||
if (_leftBound == leftBound)
|
||||
return;
|
||||
_leftBound = leftBound;
|
||||
[self refreshLayout];
|
||||
}
|
||||
|
||||
- (void)refreshLayout
|
||||
{
|
||||
runAsyncOnMainQueue(^{
|
||||
CGFloat const topOffset = self.topBound > 0 ? self.topBound + kTopShiftedOffset : kTopOffset;
|
||||
CGFloat const leftOffset =
|
||||
self.hidden ? -self.view.width : self.leftBound + kViewControlsOffsetToBounds;
|
||||
auto const availableArea = self.availableArea;
|
||||
auto const leftOffset =
|
||||
self.hidden ? -self.view.width : availableArea.origin.x + kViewControlsOffsetToBounds;
|
||||
UIView * ov = self.view.superview;
|
||||
[ov setNeedsLayout];
|
||||
self.topOffset.constant = topOffset;
|
||||
self.topOffset.constant = availableArea.origin.y + kTopOffset;
|
||||
self.leftOffset.constant = leftOffset;
|
||||
[UIView animateWithDuration:kDefaultAnimationDuration
|
||||
animations:^{
|
||||
|
@ -172,6 +156,7 @@ NSArray<UIImage *> * imagesWithName(NSString * name)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction)buttonTouchUpInside
|
||||
{
|
||||
if ([MWMTrafficManager state] == TrafficManager::TrafficState::Disabled)
|
||||
|
@ -180,6 +165,15 @@ NSArray<UIImage *> * imagesWithName(NSString * name)
|
|||
[MWMTrafficManager enableTraffic:NO];
|
||||
}
|
||||
|
||||
+ (void)updateAvailableArea:(CGRect)frame
|
||||
{
|
||||
auto controller = [self controller];
|
||||
if (CGRectEqualToRect(controller.availableArea, frame))
|
||||
return;
|
||||
controller.availableArea = frame;
|
||||
[controller refreshLayout];
|
||||
}
|
||||
|
||||
#pragma mark - MWMTrafficManagerObserver
|
||||
|
||||
- (void)onTrafficStateUpdated { [self refreshAppearance]; }
|
||||
|
|
|
@ -339,4 +339,11 @@ CGFloat constexpr kAdditionalHeight = 20.;
|
|||
return IPAD ? MWMAvailableAreaAffectDirectionsLeft : MWMAvailableAreaAffectDirectionsTop;
|
||||
}
|
||||
|
||||
#pragma mark - AvailableArea / TrafficButtonArea
|
||||
|
||||
- (MWMAvailableAreaAffectDirections)trafficButtonAreaAffectDirections
|
||||
{
|
||||
return IPAD ? MWMAvailableAreaAffectDirectionsLeft : MWMAvailableAreaAffectDirectionsTop;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -577,6 +577,9 @@
|
|||
34F742321E0834F400AC1FD6 /* UIViewController+Navigation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34F742301E0834F400AC1FD6 /* UIViewController+Navigation.mm */; };
|
||||
34F742331E0834F400AC1FD6 /* UIViewController+Navigation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34F742301E0834F400AC1FD6 /* UIViewController+Navigation.mm */; };
|
||||
34FE4C451BCC013500066718 /* MWMMapWidgets.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34FE4C441BCC013500066718 /* MWMMapWidgets.mm */; };
|
||||
34FE5A6E1F18F30F00BCA729 /* TrafficButtonArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34FE5A6D1F18F30F00BCA729 /* TrafficButtonArea.swift */; };
|
||||
34FE5A6F1F18F30F00BCA729 /* TrafficButtonArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34FE5A6D1F18F30F00BCA729 /* TrafficButtonArea.swift */; };
|
||||
34FE5A701F18F30F00BCA729 /* TrafficButtonArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34FE5A6D1F18F30F00BCA729 /* TrafficButtonArea.swift */; };
|
||||
450703091E9E6CF000E8C029 /* local_ads_symbols.txt in Resources */ = {isa = PBXBuildFile; fileRef = 450703081E9E6CF000E8C029 /* local_ads_symbols.txt */; };
|
||||
4519503A1B7A3E070085DA05 /* patterns.txt in Resources */ = {isa = PBXBuildFile; fileRef = 451950391B7A3E070085DA05 /* patterns.txt */; };
|
||||
452FCA3B1B6A3DF7007019AB /* colors.txt in Resources */ = {isa = PBXBuildFile; fileRef = 452FCA3A1B6A3DF7007019AB /* colors.txt */; };
|
||||
|
@ -2036,6 +2039,7 @@
|
|||
34FB47581E3B928D00D94ED8 /* MWMCoreUnits.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMCoreUnits.h; sourceTree = "<group>"; };
|
||||
34FE4C431BCC013500066718 /* MWMMapWidgets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMMapWidgets.h; sourceTree = "<group>"; };
|
||||
34FE4C441BCC013500066718 /* MWMMapWidgets.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMMapWidgets.mm; sourceTree = "<group>"; };
|
||||
34FE5A6D1F18F30F00BCA729 /* TrafficButtonArea.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrafficButtonArea.swift; sourceTree = "<group>"; };
|
||||
3DDB4BC31DAB98F000F4D021 /* libpartners_api.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpartners_api.a; path = "../../../omim-xcode-build/Debug-iphonesimulator/libpartners_api.a"; sourceTree = "<group>"; };
|
||||
450703081E9E6CF000E8C029 /* local_ads_symbols.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = local_ads_symbols.txt; path = ../../data/local_ads_symbols.txt; sourceTree = "<group>"; };
|
||||
451950391B7A3E070085DA05 /* patterns.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = patterns.txt; path = ../../data/patterns.txt; sourceTree = "<group>"; };
|
||||
|
@ -3424,6 +3428,7 @@
|
|||
34E7761D1F14DB48003040B3 /* PlacePageArea.swift */,
|
||||
3444DFCB1F1760B900E73099 /* WidgetsArea.swift */,
|
||||
3444DFDC1F18A5AF00E73099 /* SideButtonsArea.swift */,
|
||||
34FE5A6D1F18F30F00BCA729 /* TrafficButtonArea.swift */,
|
||||
);
|
||||
path = AvailableArea;
|
||||
sourceTree = "<group>";
|
||||
|
@ -5478,6 +5483,7 @@
|
|||
FAA614B8155F16950031C345 /* AddSetVC.mm in Sources */,
|
||||
F6E2FF681E097BA00083EBEC /* MWMUnitsController.mm in Sources */,
|
||||
34AC8FCE1EFC028600E7F910 /* MWMNavigationInfoView.mm in Sources */,
|
||||
34FE5A6E1F18F30F00BCA729 /* TrafficButtonArea.swift in Sources */,
|
||||
34ABA6301C2D58F300FE1BEC /* MWMInputEmailValidator.mm in Sources */,
|
||||
F6E2FE9C1E097BA00083EBEC /* MWMiPhonePlacePageLayoutImpl.mm in Sources */,
|
||||
3454D7C71E07F045004AF2AD /* UIButton+RuntimeAttributes.mm in Sources */,
|
||||
|
@ -5791,6 +5797,7 @@
|
|||
F6E2FD6B1E097BA00083EBEC /* MWMMapDownloaderSubplaceTableViewCell.mm in Sources */,
|
||||
6741AA021BF340DE002C974C /* BookmarksRootVC.mm in Sources */,
|
||||
34AC8FD31EFC02CC00E7F910 /* MWMNavigationInfoView.mm in Sources */,
|
||||
34FE5A6F1F18F30F00BCA729 /* TrafficButtonArea.swift in Sources */,
|
||||
F6E2FF691E097BA00083EBEC /* MWMUnitsController.mm in Sources */,
|
||||
6741AA031BF340DE002C974C /* MWMActivityViewController.mm in Sources */,
|
||||
F6E2FE9D1E097BA00083EBEC /* MWMiPhonePlacePageLayoutImpl.mm in Sources */,
|
||||
|
@ -6104,6 +6111,7 @@
|
|||
F6E2FD6C1E097BA00083EBEC /* MWMMapDownloaderSubplaceTableViewCell.mm in Sources */,
|
||||
F6E2FF6A1E097BA00083EBEC /* MWMUnitsController.mm in Sources */,
|
||||
34AC8FD41EFC02CC00E7F910 /* MWMNavigationInfoView.mm in Sources */,
|
||||
34FE5A701F18F30F00BCA729 /* TrafficButtonArea.swift in Sources */,
|
||||
3454D7BA1E07F045004AF2AD /* CALayer+RuntimeAttributes.mm in Sources */,
|
||||
F6E2FE9E1E097BA00083EBEC /* MWMiPhonePlacePageLayoutImpl.mm in Sources */,
|
||||
340475721E081A4600C92850 /* MWMSettings.mm in Sources */,
|
||||
|
|
21
iphone/Maps/UI/AvailableArea/TrafficButtonArea.swift
Normal file
21
iphone/Maps/UI/AvailableArea/TrafficButtonArea.swift
Normal file
|
@ -0,0 +1,21 @@
|
|||
final class TrafficButtonArea: AvailableArea {
|
||||
override func isAreaAffectingView(_ other: UIView) -> Bool {
|
||||
return !other.trafficButtonAreaAffectDirections.isEmpty
|
||||
}
|
||||
|
||||
override func addAffectingView(_ other: UIView) {
|
||||
let ov = other.trafficButtonAreaAffectView
|
||||
let directions = ov.trafficButtonAreaAffectDirections
|
||||
addConstraints(otherView: ov, directions: directions)
|
||||
}
|
||||
|
||||
override func notifyObserver() {
|
||||
MWMTrafficButtonViewController.updateAvailableArea(frame)
|
||||
}
|
||||
}
|
||||
|
||||
extension UIView {
|
||||
var trafficButtonAreaAffectDirections: MWMAvailableAreaAffectDirections { return [] }
|
||||
|
||||
var trafficButtonAreaAffectView: UIView { return self }
|
||||
}
|
|
@ -6,4 +6,6 @@ class SearchBar: SolidTouchView {
|
|||
override var placePageAreaAffectDirections: MWMAvailableAreaAffectDirections { return alternative(iPhone: [], iPad: .left) }
|
||||
|
||||
override var widgetsAreaAffectDirections: MWMAvailableAreaAffectDirections { return alternative(iPhone: [], iPad: .left) }
|
||||
|
||||
override var trafficButtonAreaAffectDirections: MWMAvailableAreaAffectDirections { return alternative(iPhone: .top, iPad: .left) }
|
||||
}
|
||||
|
|
|
@ -45,16 +45,24 @@
|
|||
<rect key="frame" x="0.0" y="20" width="320" height="548"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QKu-4A-UgP" customClass="TrafficButtonArea" customModule="cm_beta" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="20" width="320" height="548"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="1" alpha="0.20000000000000001" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.8666666666666667" green="0.8666666666666667" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="QKu-4A-UgP" secondAttribute="bottom" priority="100" id="488-ng-pRw"/>
|
||||
<constraint firstItem="QKu-4A-UgP" firstAttribute="top" secondItem="USG-6L-Uhw" secondAttribute="top" priority="100" constant="20" id="60l-kI-cp7"/>
|
||||
<constraint firstAttribute="trailing" secondItem="awj-9E-eBS" secondAttribute="trailing" priority="100" id="6cS-mj-HcX"/>
|
||||
<constraint firstItem="FFY-Dy-Wou" firstAttribute="leading" secondItem="USG-6L-Uhw" secondAttribute="leading" priority="100" id="AW8-cN-xzE"/>
|
||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="xJx-UU-IdV" secondAttribute="bottom" id="BqM-vp-EnJ"/>
|
||||
<constraint firstItem="QKu-4A-UgP" firstAttribute="leading" secondItem="USG-6L-Uhw" secondAttribute="leading" priority="100" id="Gw4-fq-sLY"/>
|
||||
<constraint firstAttribute="bottom" secondItem="NI8-tV-i2B" secondAttribute="bottom" priority="100" id="HW4-dR-LNu"/>
|
||||
<constraint firstAttribute="bottomMargin" secondItem="awj-9E-eBS" secondAttribute="bottom" priority="100" id="Kf4-GM-1aY"/>
|
||||
<constraint firstAttribute="trailing" secondItem="xJx-UU-IdV" secondAttribute="trailing" priority="100" id="KfO-hH-S7R"/>
|
||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="FFY-Dy-Wou" secondAttribute="bottom" id="QQc-TF-hhE"/>
|
||||
<constraint firstAttribute="trailing" secondItem="QKu-4A-UgP" secondAttribute="trailing" priority="100" id="SNy-Ck-trF"/>
|
||||
<constraint firstItem="NI8-tV-i2B" firstAttribute="leading" secondItem="USG-6L-Uhw" secondAttribute="leading" priority="100" id="Uf3-sL-39L"/>
|
||||
<constraint firstItem="awj-9E-eBS" firstAttribute="leading" secondItem="USG-6L-Uhw" secondAttribute="leading" priority="100" id="YBB-Wd-lq6"/>
|
||||
<constraint firstAttribute="bottom" secondItem="FFY-Dy-Wou" secondAttribute="bottom" priority="100" id="ZFU-IG-uZh"/>
|
||||
|
|
Loading…
Add table
Reference in a new issue