2013-02-26 25 views
6

Mam pasek wyszukiwania na górze widoku tabeli utworzonej przy użyciu układu automatycznego tak:Auto Layout nie działa?

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

Wszystko ładnie wygląda, gdy go uruchomić. Ale kiedy robię _searchBar.showsScopeBar = YES; przed rozpoczęciem edycji paska wyszukiwania, pasek wyszukiwania i widok tabeli nie zmieniają się automatycznie. Nawet gdy wykonuję [_searchBar sizeToFit], widok tabeli nie zmienia rozmiaru i jest opuszczany. Czemu??

Uwaga: Nie umieszczam paska wyszukiwania jako nagłówka widoku tabeli; to tylko widok nadrzędny i dwa podwizki. Uwaga 2: Sprawdziłem intrinsicContentSize z _searchBar przed i po wywołaniu _searchBar.showsScopeBar = YES;, a rozmiar rzeczywiście się zmienił.

Odpowiedz

4

Trzeba 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]; 
} 

Zobacz UISearchBar's scope button won't show up iOS6

+0

Więc to jest bug jabłko, prawda? Btw, te "sizeToFit" nie są potrzebne. – fumoboy007

+1

@ fumoboy007 Odnosząc się do tych referencji 'sizeToFit', masz rację, że te nie są potrzebne i usunąłem je. Dzięki. – Rob

Powiązane problemy