GSMapView скрывает панель навигации

Я реализовал GMSMapView с помощью SDK Google Maps для iOS.

пример кода из Google предлагает более или менее объявить представление, просто отбросив этот метод в вашем коде

- (void)loadView {
    // Create a GMSCameraPosition that tells the map to display the
    // coordinate -33.86,151.20 at zoom level 6.
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
                                                            longitude:151.20
                                                                 zoom:6];
    mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
    mapView_.myLocationEnabled = YES;
    self.view = mapView_;

    // Creates a marker in the center of the map.
    GMSMarker *marker = [[GMSMarker alloc] init];
    marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
    marker.title = @"Sydney";
    marker.snippet = @"Australia";
    marker.map = mapView_;
}

это работает автоматически, но mapView покрывает мой navigationItem, ясно, что карты берут свое измерение в initWithFram: CGRectZero, но просто меняют параметр на пользовательский CGRect

CGRect square = CGRectMake(100, 100, 100, 100);

у меня не сработало, есть другие предложения? мне нужно только отобразить карту между элементом навигации и панелью вкладок (но вторая не закрыта)

Карты Google, покрывающие панель навигации


person Zerho    schedule 25.06.2013    source источник


Ответы (2)


Проблема заключалась в том, что mapView_ устанавливался как весь вид

self.view = mapView_;

вычисление правильного размера и добавление его в качестве подвида было правильным способом его решения

CGRect f = self.view.frame;
CGRect mapFrame = CGRectMake(f.origin.x, 44, f.size.width, f.size.height);
mapView_ = [GMSMapView mapWithFrame:mapFrame camera:camera];
[self.view addSubview:mapView_];
person Zerho    schedule 28.06.2013
comment
Спасибо, это помогло с версией Swift. Интересно, однако, является ли это правильным способом сделать это, то есть полагаться на размер панели навигации (44) для смещения представления карты. - person Eduardo; 05.06.2016

Убедитесь, что ваш контроллер представления для карты является частью стека навигации UINavigationController. У меня не было проблем с отправкой UITabBarController с картой и вкладкой со списком на контроллер представления, встроенный в UINavigationController. Таким образом, представление панели навигации принадлежит только UINavigationController, и представление контроллера карты не должно его закрывать.

person user511    schedule 25.06.2013
comment
вы заметили, у меня есть простой UIViewController с NavigationItem сверху, а не с NavigationBar - person Zerho; 26.06.2013