2015-05-08 10 views
5

Używam kontrolera UISearchController, który integruje się z moim tableview. Aby mój pasek wyszukiwania nie przewijał się przy stole, już pod paskiem nawigacyjnym utworzyłem widok (nazwa SearchBarView), a moja tabela znajduje się pod tym widokiem. Wszystkie elementy w moim widoku są konfigurowane za pomocą automatycznego układu: enter image description hereJak zrobić autoLayout dla UISearchController podczas obracania urządzenia?

W moim kodzie. Robię UISearchController jak podrzędny z SearchBarView i korzystania z funkcji sideToFit na auto dopasowania do szerokości ekranu tak:

 self.resultSeachController = ({ 
      let controller = UISearchController(searchResultsController: nil) 
      controller.searchResultsUpdater = self 
      controller.dimsBackgroundDuringPresentation = false 
      controller.searchBar.sizeToFit() 

//   add searchbar in the searchbarView 
      self.searchBarView.addSubview(controller.searchBar) 
      return controller 
     })() 

Moja SearchBar pracuje teraz idealne, z wyjątkiem jednego: kiedy obrócić symulator, paska wyszukiwania nie jest automatycznie dopasować szerokość ekranu. Dopasowuje się on do ekranu tylko wtedy, gdy dotykam paska wyszukiwania w celu wyszukania czegoś. enter image description here enter image description here enter image description here enter image description here

nie wiem jak to naprawić. Próbowałem tego kodu:

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 

     self.resultSeachController.searchBar.sizeToFit() 

    } 

Ale nadal nie działa. Jak mogę to naprawić?

+0

Czy znaleźć żadnego obejścia dla niego? –

Odpowiedz

3

zrobić podczas animacji wraz z przejściem:

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator 
{ 
    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) { 
     [_searchController.searchBar sizeToFit]; 
    } completion:nil]; 
} 
+0

To takie proste! Dziękuję Ci! – pinkeerach

+1

nadal nie działa dla mnie. –

+0

Alternatywą jest: '_searchController.searchBar.frame.size.width = size.width' – blwinters

Powiązane problemy