* AppDelegate.m中的导航栏样式更改

时间:2011-01-01 19:05:19

标签: iphone three20

我正在使用three20框架并尝试将顶级naivagation栏从标准更改为UIStatusBarStyleBlackOpaque。

我尝试在很多地方使用很多东西,但它似乎不起作用:/

我在我的主* appdelegate.m中尝试了,然后在另一个“page1.m”中尝试了

我在appdelegate.m中使用了以下内容

navigator.rootViewController.navigationController.view.backgroundColor = [UIColor redColor];
navigator.rootViewController.navigationController.navigationBar.backgroundColor = [UIColor redColor]; 
navigator.rootViewController.navigationItem.titleView.backgroundColor = [UIColor redColor];
navigator.rootViewController.navigationController.navigationBar.barStyle = UIStatusBarStyleBlackOpaque;
navigator.rootViewController.navigationController.topViewController.navigationController.navigationBar.barStyle = UIStatusBarStyleBlackOpaque;
navigator.rootViewController.navigationController.navigationBar.tintColor = [UIColor blackColor];
navigator.rootViewController.navigationController.navigationBar.translucent = YES;

我在page1.m

中使用了以下内容
self.statusBarStyle = UIStatusBarStyleBlackOpaque; // This works! but the below doesnt
self.navigationBarStyle = UIBarStyleBlackOpaque;
self.navigationController.navigationBar.backgroundColor = [UIColor redColor]; 
self.navigationItem.titleView.backgroundColor = [UIColor redColor];
self.navigationController.navigationBar.barStyle = UIStatusBarStyleBlackOpaque;
self.navigationController.navigationBar.tintColor = [UIColor blackColor];
self.navigationController.navigationBar.translucent = YES;

我做错了什么?

由于

修改

还试过以下但仍无法正常工作

self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;
self.navigationBarStyle = UIBarStyleBlackOpaque;

navigator.rootViewController.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;
navigator.rootViewController.navigationController.topViewController.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;

/ EDIT2

调试没有给我我的结果,在我的.m文件中,这就是它的名字

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
    self.title = @"MyTitle";
NSLog(self.navigationController.navigationBar.topItem.title);//DIDNT WORK
NSLog(self.navigationItem.title);//Worked

3 个答案:

答案 0 :(得分:4)

self.navigationController.navigationBar.barStyle = UIStatusBarStyleBlackOpaque;

应该是:

self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;

//编辑:出于调试目的,您可以记录所有

*.navigationBar.topItem.title

并查看它是否打印出您当前的标题。如果没有,那就是错误的导航控制器。

答案 1 :(得分:0)

UIStatusBarStyleBlackOpaque是设置状态栏的常量,它是屏幕顶部的黑色或灰色,显示时间,接收,电池电量等。

您可以使用

进行更改
[[UIApplication sharedApplication] setStatusBarStyle:...]

对于更改导航栏,请逐个尝试列出的内容,并确保不要太早,即不要在加载和初始化视图控制器之前。

这些事情的好地方在于视图控制器-(void)viewDidLoad

答案 2 :(得分:0)

这可能是你要找的......(确保你改变了色调):

CGFloat version = [[[UIDevice currentDevice] systemVersion] floatValue];
//NSLog(@"version %f", version);
if (version <= 6.1) {
    //NSLog(@"setting navbar style to black");
    [self.navigationController.navigationBar setBarStyle:UIBarStyleBlackOpaque];
    self.navigationController.navigationBar.tintColor = [UIColor blackColor];
}