发布于 2017-10-19 19:36:00
添加这些行为我修复了它:
override func viewDidLayoutSubviews() {
self.searchController.searchBar.sizeToFit()
}发布于 2017-11-26 22:41:48
我可以使用以下代码(根据格雷格的答案)在iOS11中正确显示初始外观:
[self.searchController.searchBar sizeToFit];
if (@available(iOS 11.0, *)) {
self.navigationItem.searchController = self.searchController;
self.navigationItem.hidesSearchBarWhenScrolling = NO;
} else {
// Fallback on earlier versions
self.tableView.tableHeaderView = self.searchController.searchBar;
}然而,如果该应用程序是后台,然后恢复搜索栏是活跃的,外观将最终重叠,如上面的第二个屏幕截图所示。
我能够用以下方法解决这个问题:
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
self.searchController.searchBar.showsScopeBar = NO;
[self.searchController.searchBar sizeToFit];
self.searchController.searchBar.showsScopeBar = YES;
[self.searchController.searchBar sizeToFit];
}];(当搜索栏处于活动状态时,我仍在研究如何解决界面方向更改后的布局问题-结果仍然是重叠的。)
发布于 2017-10-02 19:24:53
在雷·温德利希提交的雷达上,@benck发布了这个来自WWDC的回答,如果我没有弄错的话,它还没有被发布。
https://stackoverflow.com/questions/46364224
复制相似问题