¿El layout automático no funciona?

Tengo una barra de búsqueda en la parte superior de una vista de tabla configurada con layout automático como:

_searchBar.translatesAutoresizingMaskIntoConstraints = NO; _tableView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[_searchBar]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_searchBar)]]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[_tableView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_tableView)]]; [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_searchBar][_tableView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_searchBar, _tableView)]]; 

Todo se ve bien cuando lo ejecuto. Pero cuando hago _searchBar.showsScopeBar = YES; antes de comenzar a editar la barra de búsqueda, la barra de búsqueda y la vista de tabla no cambian de tamaño automáticamente. Incluso cuando hago [_searchBar sizeToFit] , la vista de tabla no [_searchBar sizeToFit] tamaño y se mueve hacia abajo. ¿¿Por qué??

Nota: No estoy poniendo la barra de búsqueda como el encabezado de la vista de tabla; Es solo una vista principal y dos subvistas. Nota 2: comprobé el contenido intrinsicContentSize de _searchBar antes y después de llamar a _searchBar.showsScopeBar = YES; y el tamaño efectivamente cambia.

Tienes que invalidateIntrinsicContentSize :

 - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { searchBar.showsScopeBar = YES; [searchBar invalidateIntrinsicContentSize]; [searchBar setShowsCancelButton:YES animated:YES]; } - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar { searchBar.showsScopeBar = NO; [searchBar invalidateIntrinsicContentSize]; [searchBar setShowsCancelButton:NO animated:YES]; } 

El button de scope UISearchBar no aparecerá iOS6