NSLayoutConstraint y MKMapView

En mi método viewDidLoad, tengo código para crear un MKMapView, algunas restricciones y una barra UITool:

Tengo una MKMapView:

MKMapView *mapView = [[MKMapView alloc] init]; [mapView setTranslatesAutoresizingMaskIntoConstraints:NO]; mapView.userInteractionEnabled = TRUE; mapView.showsUserLocation = TRUE; mapView.mapType = MKMapTypeHybrid; mapView.delegate = self; [mapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES]; [self.view addSubview:mapView]; 

Creo 2 restricciones para hacerlo a pantalla completa:

 NSMutableArray *constraints = [NSMutableArray array]; [constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[mapView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(mapView)]]; [constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"|[mapView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(mapView)]]; [self.view addConstraints:constraints]; 

Funciona genial. Pero cuando bash agregar algo a la vista del map:

  UIToolbar *topBar = [[UIToolbar alloc ]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)]; [topBar setTranslatesAutoresizingMaskIntoConstraints:NO]; topBar.barStyle = UIBarStyleBlackTranslucent; [mapView addSubview:topBar]; 

arroja un error:

 *** Assertion failure in -[MKMapView layoutSublayersOfLayer:], /SourceCache/UIKit_Sim/UIKit-2372/UIView.m:5776 2013-01-10 10:24:17.503 Landscout 2[2001:14003] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still requinetworking after executing -layoutSubviews. MKMapView's implementation of -layoutSubviews needs to call super.' 

Desde mi entendimiento, dado que estoy agregando una nueva vista a la vista de map, la vista de map necesita volver a calcular todas las restricciones en ella. Básicamente un método drawRect para restricciones.

¿Cómo puedo arreglar esto?

Resolví el problema simplemente usando una vista de contenido para rellenar todo. En lugar de agregar la barra de herramientas a myMapView, lo agrego a myContentView.

Estoy bastante seguro de que MKMapView aún no está configurado para usar restricciones. MapView no llamará a [super layoutSubviews] lo que eventualmente llevaría a [UIView layoutSubviews] .

Otra posible solución que me imagino es agregar una categoría a MKMapView que anularía -layoutSubview para llamar a [super layoutSubview] , pero no sé cómo averiguar qué más hay en la [MKMapView layoutSubview] que necesitaría para añadir.