簡體   English   中英

NavigationBar和SafeArea下的iOS 11 MapView指南針在iOS 10上不起作用

[英]iOS 11 MapView Compass under NavigationBar and SafeArea not working on iOS 10

我正在努力將我的App遷移到iOS11。為了實現可重用性,我將層次結構划分為多個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上,盡管控件位於通知和指南針的欄中,遠到視圖的中心

在此處輸入圖片說明

我現在正在尋找一種解決方案,並且嘗試了很多不同的方法。 我真的很絕望,不知道我在做什么錯。 任何提示高度贊賞。

我認為您可以輕松地從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;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM