2017-11-22 33 views
0

내 앱을 iOS 11로 이전하는 데 어려움을 겪고 있습니다. 재사용을 위해 계층 구조를 여러 StoryBoard로 분할했습니다. 첫 번째 StoryBoard에는 탭 막대와 특수 뷰 (MonitoringView)를 호스팅하는 사용자 정의 컨테이너보기 컨트롤러가 있습니다. 그것은 UINavigationController에 내장되어 있습니다. 내가 모든 탭에서 동일한 기능과 제목을 원하기 때문에이 컨트롤러를 탐색 컨트롤러에 포함합니다. 내가지도를 표시 할 탭 중 하나에서iOS 11 MapView 나침반 및 SafeArea가 iOS 10에서 작동하지 않음

enter image description here

. StoryBoard에서지도를 SuperView에 0으로 고정 했으므로 탐색 및 탭 표시 줄 아래에서 가져옵니다. 여기에는 뷰 컨트롤러의 SafeArea에 고정 된 사용자 정의 컨트롤이 있습니다. 나는 응용 프로그램을 실행할 때

enter image description here

지금, 나는 아이 컨트롤러 (지도와 함께 하나)의 안전 영역 세트를 조정하기 위해 컨테이너 컨트롤러

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; 

}