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

时间:2014-01-07 08:05:26

标签: ios ios7 modalviewcontroller

在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这样的基本标题构建)将变为灰色。

与此同时,我尝试设置tintColortool bar的{​​{1}}。使用实例方法和外观方法(如navigation bar)。但它仍然无效。

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

3 个答案:

答案 0 :(得分:7)

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

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

self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;

答案 1 :(得分:1)

尝试设置

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

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

另外

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

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

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

答案 2 :(得分:0)

试用此代码:

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];