我有一个在iPad上运行的Objective-C应用程序,并显示一个模式呈现样式为UIModalPresentationPageSheet
的视图控制器:
UINavigationController *editorNavigationController = [[UINavigationController alloc] initWithRootViewController:editorViewController];
editorNavigationController.modalPresentationStyle = UIModalPresentationPageSheet;
[navigationController presentViewController:editorNavigationController animated:YES completion:nil];
当显示这个视图控制器时,导航栏中的按钮是紫色的,我假设它是从窗口的色调中拾取的,这就是我想要的。
稍后我需要在顶部显示另一个视图控制器,它填满整个窗口:
UINavigationController *previewNavigationController = [[UINavigationController alloc]initWithRootViewController:myPreviewViewController];
[owningViewController presentViewController:previewNavigationController animated:YES completion:nil];
我遇到的问题是,当显示myPreviewController
时,导航栏中的按钮是灰色的。我尝试在新的导航控制器上重新恢复颜色:
previewNavigationController.navigationBar.tintColor = [UIColor colorWithRed:123/255.0 green:26/255.0 blue:69/255.0 alpha:1];
但没有任何快乐。
如何让按钮具有正确的颜色?我可以让新的导航控制器自动拾取窗口色调颜色,还是必须明确设置它?这与将第二个导航控制器显示在使用UIModalPresentationPageSheet
的顶部导航控制器吗?
任何帮助非常感谢!谢谢,
保
答案 0 :(得分:2)
您可以将navigationBar设置为半透明且透明。
在视图中Will Appear
:
self.navigationController.navigationBar.translucent = NO;
创建一个框架大小为navigationBar (CGRectMake(0,0,self.view.frame.size.height,22)
的UIView,并在其上创建所需颜色的按钮。
我知道,这是一个拐杖,但应该工作)
答案 1 :(得分:1)
您可以全局更改UIBarButtonItem
的外观,以便所有UINavigationControllers
共享相同的设计:
[[UIBarButtonItem appearance] setTintColor:[UIColor purpleColor]];
[[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"fontName" size:16.0f],NSFontAttributeName,
nil] forState:UIControlStateNormal];
此外,您还可以更改[UINavigationBar appearance]
:
//The setTintColor would tint the < Back button in the NavigationBar
[[UINavigationBar appearance] setTintColor:[UIColor greenColor]];
[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
[[UINavigationBar appearance] setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor blueColor]}];
此代码可以在展示UIViewControllers
之前添加,也可以只在AppDelegate.m
中添加。