Reemplazar restricciones de Storyboard de iOS

¿Cómo se pueden alterar las restricciones que se establecen en el Storyboard?

Estoy intentando imitar la página de perfil de Twitter de iOS donde el encabezado se networkinguce al desplazarte hacia abajo.

Tengo una UIScrollView que ocupa toda la vista. Luego tengo una UITableView dentro de UIScrollView. Dentro del guión gráfico, debo establecer una altura fija para UITableView. Entonces, tiene la restricción de Equals Height = 350.

A continuación, bash cambiar la altura de la misma mediante progtwigción:

tableView.frame = CGRectMake(0, 0, scrollView.frame.width, scrollView.frame.height - 30) 

Cuando hago esto, no afecta en absoluto el tamaño de UITableView. Estoy asumiendo que esto se debe a las limitaciones del guión gráfico.

¿Me estoy perdiendo algo o tengo que hacer esto programáticamente para comenzar?

No luches contra la restricción establecida en el Storyboard. En su lugar, puede crear un @IBOutlet a la restricción de altura al encontrarlo en la vista Esquema de documento y controlar - desfragmentación de la restricción a su código. Dale un nombre como tableHeightContraint .

 @IBOutlet weak var tableHeightConstraint: NSLayoutConstraint! 

Luego, cuando desee cambiar la altura de UITableView , modifique la propiedad constant de la restricción:

 tableHeightConstraint.constant = scrollView.frame.height - 30 

Como @BlackRider señaló en los comentarios, a veces es necesario activar un layout después de que se hayan modificado las restricciones.

Vocación:

 view.layoutIfNeeded() 

le dirá al layout automático que aplique la restricción si es necesario. Esto es especialmente cierto si está animando el cambio. En ese caso, la llamada layoutIfNeeded() se realiza dentro del bloque de animation.

 UIView.animateWithDuration(2) { self.view.layoutIfNeeded() }