所以我有一个我正在处理的分割视图应用程序并遇到了一个奇怪的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之前的行为如此,如果有的话,需要做些什么来解决它?提前谢谢。
答案 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矩阵或您选择的任何其他方式中选择来更改色调属性。