我正在为将我的应用迁移到iOS 11而苦苦挣扎。为了可重用性,我将我的层次结构分成了多个StoryBoards。在第一个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上,虽然控件位于导航栏下,而公告和指南针则远离视图中心

我现在正在寻找一个解决方案,我尝试了很多不同的东西。我真的很绝望,完全不知道我做错了什么。任何提示都是非常感谢的。
发布于 2021-06-23 00:58:15
尝试将automaticallyAdjustsContentInset设置为YES或NO。
发布于 2018-01-28 00:56:58
我认为你可以很容易地从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;}
https://stackoverflow.com/questions/47433157
复制相似问题