diff options
Diffstat (limited to 'platform/ios')
-rw-r--r-- | platform/ios/CHANGELOG.md | 1 | ||||
-rw-r--r-- | platform/ios/src/MGLMapView.mm | 5 | ||||
-rw-r--r-- | platform/ios/test/MGLTViewController.h | 1 | ||||
-rw-r--r-- | platform/ios/test/MGLTViewController.m | 5 | ||||
-rw-r--r-- | platform/ios/test/MapViewTests.m | 23 |
5 files changed, 35 insertions, 0 deletions
diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index 4733754698..68049be4cc 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -7,6 +7,7 @@ Mapbox welcomes participation and contributions from everyone. If you’d like - If you’ve previously installed the SDK as a static framework, the installation workflow has changed to address issues when submitting your application to the App Store or installing it on a device. Upon upgrading to this version of the SDK, you’ll need to add Mapbox.bundle to the Copy Bundle Resources build phase and remove Mapbox.framework from the Embed Frameworks build phase. ([#4455](https://github.com/mapbox/mapbox-gl-native/pull/4455)) - Offline packs can now be downloaded to allow users to view specific regions of the map offline. A new MGLOfflineStorage class provides APIs for managing MGLOfflinePacks. ([#4221](https://github.com/mapbox/mapbox-gl-native/pull/4221)) - Tiles and other resources are cached in the same file that holds offline resources. The combined cache file is located in a subdirectory of the user’s Application Support directory, which means iOS will not delete the file when disk space runs low. ([#4377](https://github.com/mapbox/mapbox-gl-native/pull/4377)) +- Fixed an issue where the map view’s center would always be calculated as if the view occupied the entire screen. ([#4504](https://github.com/mapbox/mapbox-gl-native/issues/4504)) - The user dot no longer disappears after panning the map across the antimeridian at low zoom levels. ([#4275](https://github.com/mapbox/mapbox-gl-native/pull/4275)) - The map no longer recoils when panning quickly at low zoom levels. ([#4214](https://github.com/mapbox/mapbox-gl-native/pull/4214)) - Fixed an issue causing the map to pan the wrong way when the user pinches unevenly. ([#4427](https://github.com/mapbox/mapbox-gl-native/pull/4427)) diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index 9b094ec894..e8165b41e0 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -814,6 +814,11 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration) - viewController.bottomLayoutGuide.length); contentInset.bottom = (CGRectGetMaxY(self.bounds) - [self convertPoint:bottomPoint fromView:viewController.view].y); + + // Negative insets are invalid, replace with 0. + contentInset.top = fmaxf(contentInset.top, 0); + contentInset.bottom = fmaxf(contentInset.bottom, 0); + self.contentInset = contentInset; } diff --git a/platform/ios/test/MGLTViewController.h b/platform/ios/test/MGLTViewController.h index 0be0e1ff2c..349c216008 100644 --- a/platform/ios/test/MGLTViewController.h +++ b/platform/ios/test/MGLTViewController.h @@ -3,6 +3,7 @@ @interface MGLTViewController : UIViewController - (void)insetMapView; +- (void)tinyMapView; - (void)resetMapView; @end diff --git a/platform/ios/test/MGLTViewController.m b/platform/ios/test/MGLTViewController.m index 09c60bf614..451dea9292 100644 --- a/platform/ios/test/MGLTViewController.m +++ b/platform/ios/test/MGLTViewController.m @@ -21,6 +21,11 @@ _mapView.frame = CGRectInset(_mapView.frame, 50, 50); } +- (void)tinyMapView +{ + _mapView.frame = CGRectMake(20, self.topLayoutGuide.length, self.view.frame.size.width / 2, self.view.frame.size.height / 2); +} + - (void)resetMapView { _mapView.frame = self.view.bounds; diff --git a/platform/ios/test/MapViewTests.m b/platform/ios/test/MapViewTests.m index 40022a1ee5..c8fe862e0a 100644 --- a/platform/ios/test/MapViewTests.m +++ b/platform/ios/test/MapViewTests.m @@ -424,6 +424,29 @@ @"compass should lie inside shrunken map view"); } +- (void)testContentInsetsWithTinyMapView { + [tester.viewController tinyMapView]; + [self keyValueObservingExpectationForObject:tester.mapView keyPath:@"contentInset" handler:^BOOL(id observedObject, NSDictionary *change) { + XCTAssertEqual(tester.mapView.contentInset.top, + 0, + @"map should not have top content inset"); + XCTAssertEqual(tester.mapView.contentInset.bottom, + 0, + @"map should not have bottom content inset"); + return YES; + }]; + [self waitForExpectationsWithTimeout:2.0 handler:nil]; + + tester.mapView.frame = CGRectMake(0, 0, tester.mapView.frame.size.width, tester.mapView.frame.size.height); + [self keyValueObservingExpectationForObject:tester.mapView keyPath:@"contentInset" handler:^BOOL(id observedObject, NSDictionary *change) { + XCTAssertEqual(tester.mapView.contentInset.top, + tester.viewController.topLayoutGuide.length, + @"map should have top content inset equal to the top layout guide"); + return YES; + }]; + [self waitForExpectationsWithTimeout:2.0 handler:nil]; +} + - (void)testDelegateRegionWillChange { __block NSUInteger unanimatedCount; __block NSUInteger animatedCount; |