iOS 11: UISearchController 在 UITableView 和 UISearchBar 之间有一个奇怪的 space
iOS 11: UISearchController has a strange space in between UITableView and UISearchBar
我有以下代码来设置我的 UISearchController
- (void)viewDidLoad {
[super viewDidLoad];
// Arrays init & sorting.
self.cities = [@[@"Boston", @"New York", @"Oregon", @"Tampa", @"Los Angeles", @"Dallas", @"Miami", @"Olympia", @"Montgomery", @"Washington", @"Orlando", @"Detroit"] sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
return [obj2 localizedCaseInsensitiveCompare:obj1] == NSOrderedAscending;
}];
self.results = [[NSMutableArray alloc] init];
// A table view for results.
UITableView *searchResultsTableView = [[UITableView alloc] initWithFrame:self.tableView.frame];
searchResultsTableView.dataSource = self;
searchResultsTableView.delegate = self;
// Registration of reuse identifiers.
[searchResultsTableView registerClass:UITableViewCell.class forCellReuseIdentifier:Identifier];
[self.tableView registerClass:UITableViewCell.class forCellReuseIdentifier:Identifier];
// Init a search results UITableViewController and setting its UITableView.
self.searchResultsTableViewController = [[UITableViewController alloc] init];
self.searchResultsTableViewController.tableView = searchResultsTableView;
// Init a UISearchController with its UITableViewController for results.
self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchResultsTableViewController];
self.searchController.searchResultsUpdater = self;
self.searchController.delegate = self;
// Make an appropriate size for UISearchBar and add it as a header view for initial UITableView.
[self.searchController.searchBar sizeToFit];
self.tableView.tableHeaderView = self.searchController.searchBar;
// Enable presentation context.
self.definesPresentationContext = YES;
}
这很好用,除了 iOS11。似乎有两个问题。首先是当我搜索时 table 栏和搜索栏之间有一个空隙。
另一个问题是,当我退出 UISearchController
时,table 视图中的第一个单元格被搜索栏略微截断。
有办法解决这个问题吗?
正确地对您的表格视图进行自动布局。
删除所有约束并执行它,记住你的垂直 space 约束应该是 0.
谢谢。
我有以下代码来设置我的 UISearchController
- (void)viewDidLoad {
[super viewDidLoad];
// Arrays init & sorting.
self.cities = [@[@"Boston", @"New York", @"Oregon", @"Tampa", @"Los Angeles", @"Dallas", @"Miami", @"Olympia", @"Montgomery", @"Washington", @"Orlando", @"Detroit"] sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
return [obj2 localizedCaseInsensitiveCompare:obj1] == NSOrderedAscending;
}];
self.results = [[NSMutableArray alloc] init];
// A table view for results.
UITableView *searchResultsTableView = [[UITableView alloc] initWithFrame:self.tableView.frame];
searchResultsTableView.dataSource = self;
searchResultsTableView.delegate = self;
// Registration of reuse identifiers.
[searchResultsTableView registerClass:UITableViewCell.class forCellReuseIdentifier:Identifier];
[self.tableView registerClass:UITableViewCell.class forCellReuseIdentifier:Identifier];
// Init a search results UITableViewController and setting its UITableView.
self.searchResultsTableViewController = [[UITableViewController alloc] init];
self.searchResultsTableViewController.tableView = searchResultsTableView;
// Init a UISearchController with its UITableViewController for results.
self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchResultsTableViewController];
self.searchController.searchResultsUpdater = self;
self.searchController.delegate = self;
// Make an appropriate size for UISearchBar and add it as a header view for initial UITableView.
[self.searchController.searchBar sizeToFit];
self.tableView.tableHeaderView = self.searchController.searchBar;
// Enable presentation context.
self.definesPresentationContext = YES;
}
这很好用,除了 iOS11。似乎有两个问题。首先是当我搜索时 table 栏和搜索栏之间有一个空隙。
另一个问题是,当我退出 UISearchController
时,table 视图中的第一个单元格被搜索栏略微截断。
有办法解决这个问题吗?
正确地对您的表格视图进行自动布局。 删除所有约束并执行它,记住你的垂直 space 约束应该是 0.
谢谢。