2

我正在努力将我的应用程序迁移到 iOS 11。为了可重用性,我将我的层次结构分成多个 StoryBoard。在第一个 StoryBoard 中,我有一个自定义容器视图控制器,它承载一个标签栏和一个特殊视图 (MonitoringView)。它嵌入在 UINavigationController 中。我将此控制器嵌入到导航控制器中,因为我希望所有选项卡都具有相同的功能和标题。

在此处输入图像描述

在其中一个选项卡中,我想显示一张地图。在 StoryBoard 上,我使用 0 将地图固定到 SuperView,因此我在导航和标签栏下得到它。在这里,我还有一个自定义控件,我将其固定到视图控制器的 SafeArea。

在此处输入图像描述

现在当我运行应用程序时,我使用

if #available(iOS 11.0, *) {
    controller.additionalSafeAreaInsets = UIEdgeInsetsMake(monitoringView.frame.size.height, 0, tabBar.frame.size.height, 0)
}

在容器控制器中调整子控制器(带有地图的那个)的安全区域插图。

虽然这适用于我固定到安全区域的额外控件,但地图的指南针和法律通知隐藏在 iOS 11 上的导航/标签栏下。在 iOS 10 上,虽然控制在栏下,而通知和指南针距离视图中心很远

在此处输入图像描述

我几天来一直在寻找解决方案,并且尝试了很多不同的方法。我真的很绝望,不知道我做错了什么。任何提示都非常感谢。

4

2 回答 2

0

尝试设置automaticallyAdjustsContentInset为 YES 或 NO。

于 2021-06-22T16:58:15.107 回答
-1

我认为您可以轻松地从 Objective-C 重写为 Swift。

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 11)
{
    MKCompassButton *Compass = [MKCompassButton compassButtonWithMapView:self.mapView];
    Compass.frame = CGRectMake(ScreenW - 45, 90, Compass.frame.size.width, Compass.frame.size.height);
    //Compass.compassVisibility = MKFeatureVisibilityVisible;
    [self.view addSubview:Compass];
    self.mapView.showsCompass = NO;

}

于 2018-01-27T16:56:57.580 回答