Установка центральной координаты MapView не учитывает полный размер MapView (часть экрана)

Эта проблема

У меня есть представление, которое включает в себя полноэкранный MKMapView. Нижняя половина MapView покрыта TableView, у которого есть полупрозрачные ячейки, чтобы карта просвечивала.

Когда я центрируюсь на координате аннотации, например, текущее местоположение, представление аннотации блокируется TableView.

- (void)centerOnCurrentLocation
{
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(self.locationManager.location.coordinate, 50000, 50000);
    [self.mapView setRegion:[self.mapView regionThatFits:region] animated:YES];
}

Попытка решения

Сначала я попытался программно сместить карту, чтобы сместить центр, сдвигая аннотацию вверх. Этот подход работает, если я отключаю анимацию, хотя это не простое решение. Также я не хочу отключать анимацию.

Вместо этого я подумал, что если я увеличу MapView за верхнюю часть экрана на ту же высоту, что и TableView, то центр MapView окажется именно там, где я хочу. Это не работает! Когда я устанавливаю координату центра на большом MapView, аннотация все еще появляется в центре экрана, а не в центре большего MapView. Кажется, что MKMapView использует видимую область представления при вычислении его центра.

Это то, что я ожидал увидеть, когда центруюсь на текущем местоположении, используя увеличенный MapView.

Если бы только MKMapView имел свойство centerOffset, которое позволяло вам сместить центр на некоторый CGPoint.

У кого-нибудь есть простое, элегантное решение для смещения центра MapView?

Ответы на вопрос(1)

Ваш ответ на вопрос