iPad - Popover框架颜色

时间:2011-03-07 21:16:56

标签: objective-c ipad ios uisplitviewcontroller

所以我有一个我正在处理的分割视图应用程序并遇到了一个奇怪的UI错误。这是我最好的解释方法。如果我以横向模式加载应用程序,根控制器的顶部导航栏是正确的颜色。我在rootView的ViewWillAppear方法中执行此操作:

self.rvBar.tintColor = [UIColor colorWithRed:59.0/255
                               green:115.0/255
                    blue:185.0/255
                       alpha:1];

现在,当我旋转设备并通过弹出窗口显示视图时,弹出窗口是黑色的。你知道如何将popover的颜色改为同样的蓝色吗?我尝试在拆分视图控制器委托中的willHide/ShowViewController方法中执行此操作,但似乎没有任何工作。

现在是第二部分,当我旋转回横向时,再次调用上面的一行,但不是显示蓝色条,它现在是灰色的!有没有人见过splitview之前的行为如此,如果有的话,需要做些什么来解决它?提前谢谢。

4 个答案:

答案 0 :(得分:2)

我在一个基本的SplitViewController项目(在RootViewController中)尝试了这个:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:59.0/255
                                                                        green:115.0/255
                                                                         blue:185.0/255
                                                                        alpha:1];
}

它工作正常。如果你说popover仍然是黑色你的意思是标题背景是黑色的? (对我来说它是蓝色的,而popover边框是黑色的。)

也许问题来自其他地方,你如何设置你的rvBar属性?

答案 1 :(得分:1)

如果有人还在想,我已经发现了解决这个问题的方法。

在做了一些挖掘之后,我发现有一个Apple bug会禁用UIToolBar tintColor属性的修改,并且它会陷入任何状态。我必须向tintColor属性发送一条消息才能告诉它它是可以修改的。

extern id objc_msgSend (id, SEL, BOOL);
objc_msgSend([(UINavigationController *)aViewController navigationBar], @selector(_setDisableCustomTint:), NO);
/* Set the tintColor again */
[(UINavigationController *)aViewController navigationBar].tintColor = [UIColor colorWithRed:59.0/255
                                                                                      green:115.0/255
                                                                                       blue:185.0/255
                                                                                      alpha:1];

显然,如果您打算将申请提交到Apple商店,这是不可接受的,但就我的目的而言,这样做了。希望这有助于你们中的一些人......

答案 2 :(得分:0)

您无法更改Popover的{​​{1}},该属性不存在。

有关Popover的更多信息,请查看UIPopoverController Class Reference

答案 3 :(得分:0)

您还可以通过Interface Builder更改(Rootviewcontroller的)导航栏;只需从左侧列表中选择导航栏,然后通过从rgb矩阵或您选择的任何其他方式中选择来更改色调属性。