2014-01-07 67 views
0

在iPad的iOS7上,我首先安裝了一個模態視圖控制器,大小爲320 * 460,然後在此模式視圖控制器中,我呈現了另一個導航視圖控制器,之後,呈現的導航控制器的導航欄和工具欄的色調變爲灰色。我試圖設置導航欄和工具欄的色調,但它不起作用。爲什麼tintColor不適用於iOS7上的導航欄或工具欄

然後我試着直接顯示導航控制器,然後所有的色調顏色在naviagtion欄和工具欄上都可以工作。

我已經嘗試過導航欄和工具欄的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 barnavigation bartintColor。使用實例方法和外觀方法(如[[UIToolBar appearance] setTintColor:[UIColor blueColor]])。但它仍然不起作用。

然後我試圖直接從一個普通的視圖控制器呈現UIModalPresentationFormSheet風格的navigationViewController,然後導航欄和工具欄的所有tintColor變爲藍色(系統藍色)。

+1

你可以發佈你現在在做什麼的 – Johnykutty

+0

可能重複的[設置導航欄色調顏色的iOS 7](http://stackoverflow.com/questions/19521254/set-navigationbar-tint-color-in代碼-ios-7) – Laszlo

+0

@TussLászló我試過的答案但不起作用。 –

回答

7

這種情況貝科使用Apple假定我們不會呈現超過1個視圖控制器,並將背景和所有欄按鈕項目(不知道爲什麼)變暗爲默認行爲,以將焦點放在最前面的視圖上。

要解決此問題,只需在DidFinishLaunchingWithOptions中的應用程序窗口上強制tintAdjustmentMode爲Normal即可。

self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal; 
+0

太棒了,它確實有效。 –

+0

解決!非常感謝你! –

+0

太棒了!很高興它的工作:D –

1

嘗試設置

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

哪裏NavBarBGTile。PNG是1X1px平鋪圖像在彩色你想要的導航欄顏色

而且

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

更換白色與任何你想要的

這兩根線應在應用程序啓動的開頭放置

+0

backgroundImage!= tintColor – Desdenova

+0

真的,我說的是'tintColor'屬性,你可以試試我上面描述的。 PS:我將導航控制器的modalPresentationStyle設置爲'UIModalPresentationCurrentContext'。 –

+0

我已經嘗試過,但它不起作用 –

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