在以 Uinavigationcontroller 作为视图的 Popovercontroller 中更改导航栏和工具栏的色调

Posted

技术标签:

【中文标题】在以 Uinavigationcontroller 作为视图的 Popovercontroller 中更改导航栏和工具栏的色调【英文标题】:Change tint of navigationBar and toolBar in a Popovercontroller with Navigationcontroller as view 【发布时间】:2011-01-06 21:58:46 【问题描述】:

我有一个 UINavigationController 作为我的 UIPopoverController 的主视图。我想更改 navigationBar 和 toolBar 的颜色,但似乎无法正常工作。

谁能指出我正确的方向?

这是我的代码,但它不起作用。 其中配色方案 = [UIColor colorWithRed:0.228 green:0.307 blue:0.492 alpha:1.000] 以下是 NSLOG 语句的结果: 颜色方案 = UIDeviceRGBColorSpace 0.228 0.307 0.492 1

    self.navController = [[UINavigationController alloc]
                      initWithRootViewController:serversMenu];
NSLog(@"Color Scheme = %@", self.appDelegate.colorScheme);
self.navController.navigationBar.tintColor = self.appDelegate.colorScheme;
self.navController.toolbar.tintColor = self.appDelegate.colorScheme;

self.navController.navigationBar.translucent = YES; 
UIPopoverController *poc = [[UIPopoverController alloc] initWithContentViewController:self.navController];
poc.delegate = serversMenu;
serversMenu.mainPopOver = poc;
[poc release];

谢谢,

罗伯

【问题讨论】:

你有解决办法吗? 【参考方案1】:

这很好用:

AboutViewController *avc = [[AboutViewController alloc] init];

UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:avc] retain];

avc.navigationController.navigationBar.tintColor = [UIColor greyColor]; /* or whatever color you choose */
toolbar.tintColor = [UIColor greyColor];

取决于您选择如何创建UIPopoverController

【讨论】:

我一定是做错了什么。这就是我正在做的事情,并且模拟器中的色调没有改变。 self.appDelegate.colorScheme 是怎么回事?它是否返回正确的颜色? 是的,它从我的 NSLOG 语句返回 UIDeviceRGBColorSpace 0.228 0.307 0.492 1。它应该是正确的,因为它确实正确地改变了用户界面的其他元素。 有这方面的消息吗?我在这里遇到了同样的问题。【参考方案2】:

这是一个错误...这是您的修复...使用它创建 UINavigationBar 的子类,因为它是唯一的新方法:

- (void)setTintColor:(UIColor *)tintColor

    // Bug workaround.  
    [super setTintColor:[self tintColor]];

我会冒险说这是 ios 4.2.x 的 PopOver/SplitView 更新中的一个错误……我说“错误”是因为我的设置非常像你和在 4.1 下,它按预期工作。现在,在 4.2.x 下,它最初看起来不错,但是一旦您在弹出窗口中打开 masterView,然后旋转回双分割,masterView 的导航栏是银色的(ios 默认),再多的锤击也不会得到 masterView 的导航栏色调重置为您的配色方案...

鉴于我自己并不完全理解它,我不知道如何最好地将它以错误报告的形式表达出来。但它曾经起作用了,我们并没有做任何疯狂的事情!

【讨论】:

以上是关于在以 Uinavigationcontroller 作为视图的 Popovercontroller 中更改导航栏和工具栏的色调的主要内容,如果未能解决你的问题,请参考以下文章

关闭 UINavigationController 并呈现另一个 UINavigationController

如何在以编程方式制作滚动视图时解决此问题?

iOS:如何在现有 UINavigationController 中打开另一个 UINavigationController?

带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller

带有 UINavigationController 的 UITabBarController,在 hidesBottomBarWhenPushed 上隐藏 UINavigationController

在 UINavigationController 内的 UITabBarcontroller 中添加 UINavigationController?