5 objective-c ios cncontactviewcontroller ios10
当我按下a中CNContactViewController的UITableViewController子类堆栈时UINavigationController,顶部导航栏几乎完全隐藏.但是随着亮度一直向上,你会看到后面的箭头,然后是"细节"和系统状态栏.当我点击屏幕的那个角落时,CNContactViewController确实被解雇了.
当然这不好,因为用户可能甚至看不到导航栏的文本,现在按任何按钮来解除.
有没有办法让CNContactViewController的导航栏色调与显示它的视图控制器(我的应用程序的其余部分)相同?
CNContactViewController *controller = [CNContactViewController viewControllerForUnknownContact:person];
controller.contactStore = [[CNContactStore alloc] init];
controller.delegate = self;
controller.allowsActions = NO;
[self.navigationController pushViewController:controller animated:YES];
Run Code Online (Sandbox Code Playgroud)
我应该注意到我只是在iOS 10上遇到这个问题,而不是10以下的版本.当我点击"添加到现有联系人"时,我也得到了正确着色的导航栏,但是当该视图控制器被解除时它再次中断.
所以再一次,我的问题是:有没有办法让CNContactViewController的导航栏色调与显示它的视图控制器(我的应用程序的其余部分)相同?
您的第二个屏幕截图显示了此问题的原因:您已将栏(或一般栏按钮项目)的色调颜色设置为白色。因此,它们在透明导航栏前面是白色的,在联系人视图控制器中是白色背景的。
您无法直接对条形色调颜色执行任何操作,但可以通过以下两种方法之一解决此问题:
一是使导航栏不透明。在这种情况下,联系人视图控制器的导航栏将为黑色,并且白色栏按钮项目将可见。
另一种方法是在联系人视图控制器按下时更改导航栏的色调颜色(不是导航栏色调颜色,而是它向下传达到其栏按钮项目的色调颜色),并在弹出时将其更改回来。
编辑好的,我发现还有一个问题,因为新联系人视图控制器是您面前呈现的另一个视图控制器。如果您拒绝放弃白条按钮项设置,则当您按下联系人视图控制器时,您将必须使用外观代理将 UIBarButtonItem 色调颜色设置为其他颜色,然后在导航控制器时将其重置回白色delegate 告诉您用户正在弹出回您的视图控制器。