CNContactPickerViewController 内容渗入搜索栏和状态栏

CNContactPickerViewController content bleeds to search bar and status bar

我要介绍 CNContactPickerViewController(强烈引用 ivar):

contactsViewController = [[CNContactPickerViewController alloc] init];
contactsViewController.delegate = self;
[self presentViewController:contactsViewController animated:YES completion:nil];

然而,结果如下:

遇到问题后,我尝试更改搜索栏的外观(不确定我应该设置什么,只是尝试):[[UISearchBar appearanceWhenContainedInInstancesOfClasses:@[[CNContactPickerViewController class]]] setBarTintColor:[UIColor redColor]]; 但它没有做任何事情。

为什么会发生这种情况,我该如何解决?

更新: 我在联系人视图控制器上尝试了以下各种组合:

但是,没有任何变化。它们都产生相同的结果。

我在其他一些移除视图控制器上也遇到了同样的问题。

我有一些代码在应用程序启动时使用代理设置外观,这看起来很可疑。我已经禁用了在应用程序启动时设置外观代理的代码,问题就消失了。经过调查,我找到了罪魁祸首:

[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; 我用它来使导航栏背景在某些地方完全透明,尽管它是旧设计的遗留物并且不需要。我删除了这条线,问题就消失了。

UINavigationBar.appearance().isTranslucent = false

在呈现控制器之前添加这一行。

对我有用!