I've solved this by calculating the offset I desire and setting a new region.
// Update iVar when region changes
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{
CGFloat screenHeight = self.view.frame.size.height;
CGFloat otherControlsHeight = self.toolbarView.frame.size.height + self.collectionView.frame.size.height + self.navigationController.navigationBar.frame.size.height;
CGFloat pointOffset = (screenHeight - otherControlsHeight);
CGFloat percentage = pointOffset / screenHeight;
latitudeOffset = mapView.region.span.latitudeDelta / 2.0 * percentage;
}
// Then whenever you set your centerCoordinate or region
MKCoordinateRegion region = self.mapView.region;
region.center = CLLocationCoordinate2DMake(region.center.latitude - latitudeOffset, region.center.longitude);
[self.mapView setRegion:region animated:YES];