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)]; }
这对我有用,我希望你能使它工作