如何在旋转设备时为UISearchController制作autoLayout?

Hie*_*ham 5 uisearchbar ios swift uisearchcontroller

我正在使用UISearchController与我的tableview集成.为了使我的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
        })()
Run Code Online (Sandbox Code Playgroud)

我的SearchBar现在工作正常,除了一个:当我旋转模拟器时,searchBar不会自动适合屏幕的宽度.当我触摸SearchBar进行搜索时,它只适合屏幕. 在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述

我不知道如何解决.我试过这段代码:

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

        self.resultSeachController.searchBar.sizeToFit()

    }
Run Code Online (Sandbox Code Playgroud)

但它仍然无法正常工作.我该如何解决这个问题?

Ced*_*ick 4

在随着过渡制作动画时执行此操作:

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