2013-02-26 18 views
6

Ich habe eine Suchleiste oben auf einer Tabellenansicht wie so mit Auto-Layout einrichten:Auto-Layout funktioniert nicht?

_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)]]; 

Alles sieht gut aus, wenn ich es laufen. Aber wenn ich _searchBar.showsScopeBar = YES; mache, bevor ich beginne, die Suchleiste zu bearbeiten, werden die Suchleiste und die Tabellenansicht nicht automatisch skaliert. Auch wenn ich [_searchBar sizeToFit] mache, wird die Tabellenansicht nicht verkleinert und nach unten verschoben. Warum??

Hinweis: Ich setze die Suchleiste nicht als Kopfzeile der Tabellenansicht ein; es ist nur eine Elternansicht und zwei Unteransichten. Hinweis 2: Ich habe die intrinsicContentSize von _searchBar vor und nach dem Anruf _searchBar.showsScopeBar = YES; überprüft und die Größe ändert sich tatsächlich.

Antwort

4

Sie müssen 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]; 
} 

UISearchBar's scope button won't show up iOS6

+0

Siehe So dies ein Apple-Bug ist, nicht wahr? Übrigens, diese 'sizeToFits' werden nicht benötigt. – fumoboy007

+1

@ fumoboy007 In Bezug auf diese "sizeToFit" -Referenzen sind Sie richtig, dass diese nicht benötigt werden und ich sie entfernt habe. Vielen Dank. – Rob

Verwandte Themen