1

我试图将我的 UISearchBar 直接放在我的 UINavigationBar 下,但我遇到了根本没有出现的问题。我正在使用 iOS8 的新 searchController。

 self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController];
 self.searchController.searchResultsUpdater = self;
 self.searchController.searchBar.frame = CGRectMake(self.searchController.searchBar.frame.origin.x, self.searchController.searchBar.frame.origin.y, self.searchController.searchBar.frame.size.width, 44.0);
 self.salesTableView.tableHeaderView = self.searchController.searchBar;

目前我正在使用它正确地将它添加到我的 UITableView 标题中,但问题是它与表格一起滚动,这不是我想要的。我希望它在我的 tableview 上方,所以它坚持并尝试了这个,但它现在似乎已经消失了,除非我没有使用正确的值?

 self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController];
 self.searchController.searchResultsUpdater = self;
 self.searchController.searchBar.frame = CGRectMake(0, 0, self.searchController.searchBar.frame.size.width, 44.0);
 //  self.salesTableView.tableHeaderView = self.searchController.searchBar;
4

2 回答 2

5

因为原点是(0,0),所以会被状态栏和导航栏隐藏。如果更改为:您应该会看到搜索栏:

self.searchController.searchBar.frame = CGRectMake(0, 64, self.searchController.searchBar.frame.size.width, 44.0);

我有两个解决方案。我将向您展示简单的方法(您也可以使用故事板):在您的 ViewController 中创建一个 UIView,命名为searchBarView; 添加self.searchController.searchBarsearchBarView; 添加searchBarView到您的视图控制器。

UIView *searchBarView = CGRectMake(0, 64, self.searchController.searchBar.frame.size.width, 44);
[searchBarView addSubView:self.searchController.searchBar];
[self.view addSubView:searchBarView];

我假设您self.searchController.searchBar.sizeToFit()在 viewDidload 中设置了搜索控制器。如果是通用应用程序,则需要添加此方法(至少在我的情况下使一切正常):

- (void)viewDidLayoutSubviews {
    // you could check
    // if (IS_IPAD || (IS_IPHONE_6PLUS && UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))) 
    [self.searchController.searchBar sizeToFit];
}

这是我在stackoverflow上的第一个答案。希望对您有所帮助^^。

于 2014-12-11T05:03:43.113 回答
2

要检查的两件事:

  1. 尝试automaticallyAdjustsScrollViewInsetsfalse您的UIViewController. 这应该将视图控制器视图的子视图转移到导航栏下方。

  2. 使用searchFieldBackgroundPositionAdjustment(适用于 iOS 5+)来调整搜索字段在您的UISearchBar


用法:

let searchBar = UISearchBar()
searchBar.searchFieldBackgroundPositionAdjustment = UIOffset(horizontal: 0, vertical: 10)
于 2016-04-21T23:09:46.337 回答