为什么tintColor不能在iOS7上的导航栏或工具栏上工作

在iPad的iOS7上,首先,我设置了一个模态视图控制器,大小为320 * 460,然后,在这个模态视图控制器中,我呈现了另一个导航视图控制器,在此之后,导航栏和工具栏的色调颜色导航控制器变为灰色。 我试图设置导航栏和工具栏的色调,但它不起作用。

然后我尝试直接呈现导航控制器,然后所有色调颜色都适用于导航栏和工具栏。

我试过导航栏和工具栏的barTintColor属性,它的工作原理。

我不知道会发生什么,以及如何解决它。

请帮忙,谢谢!

更新

首先,我定义一个视图控制器:modalViewController目前的模态视图控制器如下:

 if (DeviceIsPad()) // DeviceIsPad is a method defined somewhere to tell that the device is an iPad. modaViewController.modalPresentationStyle = UIModalPresentationFormSheet; //here self is a normal view controller [self presentViewController:modalViewController animated:YES completion:NULL]; 

二,定义导航视图控制器:navigationController如下所示呈现导航控制器:

 if (DeviceIsPad()) navigationController.modalPresentationStyle = UIModalPresentationCurrentContext; // here self means the modalViewController mentioned above [self presentViewController:navigationController animated:YES completion:nil]; 

我在navigationController的’viewDidLoad’方法中设置了导航栏和工具栏栏项。

默认情况下,当导航视图控制器出现时,所有工具栏按钮项(使用基本标题(如CancelOK )构建的项目)将变为灰色。

同时,我试图设置tool barnavigation bar tintColor 。 使用实例方法和外观方法(如[[UIToolBar appearance] setTintColor:[UIColor blueColor]] )。 但它仍然无效。

然后我尝试直接从普通视图控制器呈现上面提到的带有UIModalPresentationFormSheet样式的navigationViewController ,然后导航栏和工具栏的所有tintColor变成蓝色(系统蓝色)。

发生这种情况是因为Apple假定我们不会提供多个视图控制器,并将背景和所有条形按钮项目(不确定原因)调暗为默认行为,以便将焦点放在最前面的视图上。

要解决此问题,您只需要在DidFinishLaunchingWithOptions的应用程序窗口中强制tintAdjustmentMode为Normal。

 self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal; 

尝试设置

  [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"NavBarBGTile.png"] forBarPosition:UIBarPositionTopAttached barMetrics:UIBarMetricsDefault]; 

其中NavBarBGTile.png是1X1px平铺图像,您想要的颜色为导航栏颜色

  [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]]; 

用你想要的任何东西替换白色

这些行应该在应用程序启动的开始时放置

试试此代码:

 UIView *masterView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 260)]; UIToolbar *pickerToolbar = [self createPickerToolbarWithTitle:@"Surgeons"]; pickerToolbar.barTintColor= [UIColor blueColor]; pickerToolbar.translucent=YES; [masterView addSubview:pickerToolbar]; [masterView addSubview:pickerViewObj]; UIViewController *viewController = [[UIViewController alloc] initWithNibName:nil bundle:nil]; viewController.view = masterView; viewController.contentSizeForViewInPopover = viewController.view.frame.size; self.popoverController =[[UIPopoverController alloc] initWithContentViewController:viewController];