为什么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’方法中设置了导航栏和工具栏栏项。
默认情况下,当导航视图控制器出现时,所有工具栏按钮项(使用基本标题(如Cancel
, OK
)构建的项目)将变为灰色。
同时,我试图设置tool bar
和navigation 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];