iOS 11.2 - 导航栏带有大标题时搜索控制器栏背景为透明

3

我刚刚升级到iOS 11.2版本,现在我的UISearchController的搜索栏出现了问题。当搜索栏处于激活状态时,搜索栏背后的区域变成了不可见/透明。

我创建了一个测试项目来确保自己没疯。以下是原始设置:

navigationBar.translucent = YES;
navigationBar.barTintColor = [UIColor orangeColor];

self.navigationItem.searchController = myUISearchController;

以下是应有的显示效果:

关闭 <code>prefersLargeTitles</code> 的情况下


但如果我使用了大标题和背景图像,那么结果就会是这样:

navigationBar.prefersLargeTitles = YES;
[navigationBar setBackgroundImage:bgImage forBarMetrics:UIBarMetricsDefault];

使用<code>prefersLargeTitles</code>


如果有人找到解决方法,我会非常感激帮助。

✌️


我也遇到了同样的问题。既然你已经做了一个测试项目,就把它填入雷达中吧 :) - GuillermoMP
1个回答

2

除了放弃背景图像或大标题之外,这是我想到的唯一解决方案。

在搜索出现之前禁用大标题,并在其关闭时重新启用。有点糟糕,但似乎能解决问题。

self.navigationItem.searchController.delegate = self;

...

- (void)willPresentSearchController:(UISearchController *)searchController {
    self.navigationController.navigationBar.prefersLargeTitles = NO;
}

- (void)willDismissSearchController:(UISearchController *)searchController {
    self.navigationController.navigationBar.prefersLargeTitles = YES;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接