iPad – Popover框架颜色

所以我有一个拆分视图应用程序,我遇到了一个奇怪的UI错误。 这是我最好的尝试来解释它。 如果我以横向模式加载应用程序,根控制器的顶部导航栏是正确的颜色。 我在rootView的ViewWillAppear方法中这样做:

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

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

现在回到第二部分,当我回到风景时,上面的行再次被调用,而不是显示蓝色条,现在是灰色! 有没有人见过splitview行为像这样,如果是这样,需要做些什么来解决它? 提前致谢。

我在一个基本的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保持黑色时,你的意思是标题背景是黑色的? (对我来说,它是蓝色的,popup边框是黑色的)。

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

如果有人仍然在想,我已经发现了这个问题的解决scheme。

在做了一些挖掘之后,我发现有一个苹果的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]; 

如果你打算把你的应用程序提交给苹果商店,显然这是不可接受的,但是对于我的目的来说,这是不可能的。 希望这可以帮助你们中的一些人…

你不能改变PopovertintColor属性不存在。

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

您也可以通过Interface Builder更改(Rootview控制器的)导航栏; 只需从左边的列表中select导航栏并通过从rgbmatrix中select或者您select的任何其他方法来更改tint属性。