ios cambiar la restricción programáticamente

Estoy usando autolayout con una restricción. El espacio superior a supervisión es 100

Ahora quiero cambiar esto para que cuando el usuario rote el dispositivo al paisaje. El espacio superior a la supervisión sea de 50

¿Se puede hacer esto en el momento del layout?

¿Cómo se puede hacer esto en time de ejecución?

Solutions Collecting From Web of "ios cambiar la restricción programáticamente"

Bueno, si sus 50 px para el paisaje y 100 para el retrato pueden derivarse de alguna manera por las relaciones con las subvistas de hermanos y las correcciones fijas a los límites de la supervisión, entonces sí, esto se puede hacer "en time de layout", y eso es realmente lo que la distribución automática es destinado a ser para

De lo contrario, necesitaría tener una reference a la constraint , entonces en el willRotateToInterfaceOrientation:duration: necesitará cambiar el valor de la constant de esta constraint y llamar a layoutIfNeeded para la supervisión.

 - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; self.myConstraint.constant = (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) ? 50. : 100.; [self.someView layoutIfNeeded]; } 

(escrito en el browser, puede tener errores)