Как сделать autoLayout для UISearchController при повороте устройства?

Я использую UISearchController, интегрированный с моим табличным представлением. Чтобы мой searchBar не прокручивался вместе с таблицей, я уже создал View (имя SearchBarView) под панелью навигации, и моя таблица находится под этим представлением. Все элементы в моем представлении настраиваются с использованием автоматического макета: введите описание изображения здесь

В моем коде. Я делаю UISearchController как часть SearchBarView и использую функцию sideToFit для автоматического соответствия ширине экрана следующим образом:

      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
        })()

Моя SearchBar теперь работает отлично, за исключением одного: когда я поворачиваю симулятор, searchBar автоматически не соответствует ширине экрана. Он умещается на экране только тогда, когда я касаюсь SearchBar для чего-то поиска. введите описание изображения здесь введите описание изображения здесь  введите описание изображения здесь  введите описание изображения здесь

Не знаю, как исправить. Я пробовал этот код:

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

        self.resultSeachController.searchBar.sizeToFit()

    }

Но это все еще не работает. Как я могу это исправить?


person Hieu Duc Pham    schedule 08.05.2015    source источник
comment
Вы можете найти обходной путь?   -  person The iCoder    schedule 11.07.2017


Ответы (1)


Сделайте это во время анимации вместе с переходом:

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator
{
    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
        [_searchController.searchBar sizeToFit];
    } completion:nil];
}
person Cedrick    schedule 03.08.2015
comment
Это так просто! Спасибо! - person pinkeerach; 13.09.2015
comment
Альтернатива: _searchController.searchBar.frame.size.width = size.width - person blwinters; 27.07.2016