我正在努力将我的应用程序迁移到iOS 11。为了可重用性,我将层次结构拆分为多个故事板。在第一个故事板中,我有一个自定义容器视图控制器,它承载一个选项卡栏和一个特殊视图(监视视图)。它嵌入在UINavigationController中。我将此控制器嵌入到导航控制器中,因为我希望所有选项卡上的功能和标题都相同。
在其中一个选项卡中,我想显示地图。在情节串连板上,我用0将地图固定到SuperView,这样我就可以在导航和选项卡栏下获得地图。这里还有一个自定义控件,我将它固定到视图控制器的安全区域。
现在当我运行应用程序时,我使用
if #available(iOS 11.0, *) {
controller.additionalSafeAreaInsets = UIEdgeInsetsMake(monitoringView.frame.size.height, 0, tabBar.frame.size.height, 0)
}
在容器控制器中调整子控制器(带映射的控制器)的安全区域插入。
虽然这对我固定在安全区域的额外控制效果很好,但iOS11上的导航/标签栏下隐藏着指南针和地图的法律公告。在iOS 10上,尽管控件位于条下,而通知和指南针则位于视图的中心
我找了好几天的解决方案,我尝试了很多不同的方法。我真的很绝望,不知道自己做错了什么。任何暗示都是非常感激的。
最佳答案
我认为你可以很容易地从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;
}