iOS 11 Searchcontroller跳转到屏幕顶部

与已发布相同的问题(非答案工作..),我的表是一个固定的宽度,并在iOS 10.x的search栏(这是在tableviewheader),键入时保持相同的大小。 然而,在iOS 11中,它跳转到屏幕的顶部,并在整个宽度上伸展。 所有选项尝试;

self.definesPresentationContext = YES; tableHeaderView.clipsToBounds = YES; etc 

但似乎没有改变..它仍然跳转到顶部全宽度..

任何其他选项?

Xcode 9通用与iOS 11(Xcode 9通用与iOS 10.x和它一切正常)

首先你需要添加UISearchControllerDelegate

然后设置你的委托

 self.searchController.delegate=self; 

放置一个新的视图,将保存您的searchController

 -(void) viewDidLoad{ UIView *searchContainerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.searchTable.frame.size.width, 30)]; searchContainerView.layer.masksToBounds=YES; searchContainerView.clipsToBounds=YES; self.tableView.tableHeaderView=searchContainerView; self.searchController.searchBar.layer.masksToBounds=YES; self.searchController.searchBar.clipsToBounds=YES; [searchContainerView addSubview:self.searchController.searchBar]; [self.searchController.searchBar setFrame:CGRectMake(0, 0, 300, 30)];//Make sure that your header view and searchcontroller size is same } 

然后添加这些委托方法

 - (void)didPresentSearchController:(UISearchController *)searchController{ [searchController.searchBar setFrame:CGRectMake(0, 0, 300, 30)]; } - (void)didDismissSearchController:(UISearchController *)searchController{ [searchController.searchBar setFrame:CGRectMake(0, 0, 300, 30)]; } 

这对我有用,我希望你能使它工作