2017-11-22 43 views
0

私のアプリケーションをiOS 11に移行するのに苦労しています。再利用のために、私は階層を複数のStoryBoardに分割しました。最初のStoryBoardには、タブバーと特別なビュー(MonitoringView)をホストするカスタムコンテナビューコントローラがあります。これはUINavigationControllerに埋め込まれています。すべてのタブで同じ機能とタイトルが必要なので、このコントローラーをナビゲーションコントローラーに埋め込みました。私は、地図を表示したいタブの一つでiOS 11 NavViewerの下のMapViewコンパスとSafeAreaがiOS 10で動作しない

enter image description here

。 StoryBoardではマップを0でSuperViewに固定していましたので、ナビゲーションとタブバーの下に表示されます。ここでは、View ControllerのSafeAreaに固定したカスタムコントロールもあります。私はアプリを実行したときに

enter image description here

は今、私は、子コントローラ(マップを持つ1)の安全なエリアインセットを調整するために、コンテナコントローラに

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

を使用しています。

セーフエリアに固定した余分なコントロールはうまく動作しますが、地図のコンパスと法的通知はiOS 11のナビゲーション/タブバーの下に表示されません。iOS 10ではコントロールはバーの下にありますが通知とコンパスは、私は今の日のためのソリューションを探していますし、私は非常に多くの異なるものを試してみました

enter image description here

ビューの中心に遠くにあります。私は本当に必死で、私が間違っていることを知らない。どんなヒントも高く評価されます。

答えて

0

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; 

}

関連する問題