iOS: layout automático vs autoresizingMask: ¿cambiar el tamaño de toda la vista para que se llene?

Tengo un storyboard que se construye con Auto Layout. Dentro de ese storyboard, estoy incrustando una subclass UIViewController ( ButtonGridViewController ) en varias ubicaciones, cada una de las cuales tiene un tamaño diferente. La vista de ButtonGridViewController se define en un xib.

Lo que necesito es que la vista de ButtonGridViewController simplemente una escala para completar la vista en la que la estoy insertando. Con el método anterior de struts-and-springs, esto era trivial, simplemente configura todas las subvistas para cambiar el tamaño en ambas direcciones, y listo, trozo de pastel.

¿Cómo logro lo mismo usando restricciones? Por lo que vale, el xib solo contiene una vista principal, que es rectangular, y tiene 4 subvistas, cada una un button, dispuestas en una cuadrícula de 2×2. Quiero todo, incluidos los botones Y espaciado, escalar y / o estirar para llenar la vista en la que se va.

¡Gracias!

Para lograr lo mismo utilizando restricciones, debe establecer el espacio inicial, superior, superior e inferior a la supervista en 0. Vea a continuación:

 //load the ButtonGridViewController from a xib [[NSBundle mainBundle] loadNibNamed:@"..." owner:self options:nil]; //get the view add it [self.view addSubView:self.myGridView]; //turn off springs and struts [self.view setTranslatesAutoresizingMaskIntoConstraints:NO]; //add constraints to fill parent view NSArray *arr; //horizontal constraints arr = [NSLayoutConstraint constraintsWithVisualFormat:@"|[vw]|" options:0 metrics:nil views:@{@"vw":self.myGridView}]; [self.view addConstraints:arr]; //vertical constraints arr = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[vw]|" options:0 metrics:nil views:@{@"vw":self.myGridView}]; [self.view addConstraints:arr];