Установка центральной координаты 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?