2011-05-12 126 views

回答

3

不幸的是,UIPopoverController是不可定制的。您无法更改边框颜色,导航栏样式/颜色或箭头样式/颜色:How to customize/style a UIPopoverController

+2

这不再有效,在iOS5 popoverBackgroundView可以被子类化后,这里是我刚刚使用的一个好的:https://github.com/GiK/GIKPopoverBackgroundView – 2013-12-10 08:20:06

+0

注意 - 上面的一个是旧的/过时的答案。现在在iOS 7中,对于导航栏和箭头颜色更改,'UIPopoverController'已经引入'backgroundColor'作为属性。请参阅下面的答案。 – Ashok 2014-02-14 02:01:36

-2

我尝试通过使用此代码

UIView * border = [[insideViewController.view.superview.superview.superview subviews] objectAtIndex:0]; 
border.hidden = YES; 

的应用程序实际上仍然在发展,所以我希望其他人也对此有何评论定制视图 - 控制的酥料饼内,然后躲在酥料饼的边界诱骗解。

+4

即使您的应用程序被接受,修改未曝光的视图层次结构也可能是一个坏主意。如果将来苹果修改该视图,您的代码会突然停止工作。 – mjisrawi 2011-08-15 09:51:48

+0

你可能想链接到你的dup答案http://stackoverflow.com/a/7063257/1015071 – 2012-09-29 20:47:35

0

弹出窗口中的导航栏和工具栏只是一个标准的UINavigationBar和UIToolBar,我已经成功地改变了它们的外观,就像使用普通的导航栏或工具栏一样。但是边框不容易定制。

5

现在在iOS 5中,popoverBackgroundViewClass可用。

41

的iOS 7日起在自定义边框色调的颜色,bodrer宽度以及箭头,你可以改变backgroundColor of UIPopoverController影响导航背景颜色以及弹出箭头。

@property (nonatomic, copy) UIColor *backgroundColor NS_AVAILABLE_IOS(7_0); 

用例:

if ([self.popoverVC respondsToSelector:@selector(setBackgroundColor:)]) { // Check to avoid app crash prior to iOS 7 
     self.popoverVC.backgroundColor = [UIColor greenColor]; 
    } 

注意 - 截至目前(的iOS 7.0.3),在某些情况下(如使用colorWithPatternImage :)集色,模拟器不兑现颜色但在设备上它工作正常

+5

应该是被接受的答案。 – Goles 2014-01-02 16:50:05

+0

是的,如果你只需要改变popover的背景(包括箭头),这是最快的方法。对UIPopoverBackgroundView进行简单更改的子类化要好得多。 – timgcarlson 2014-02-03 20:04:56

+0

请注意,如果您在弹出窗口中显示的视图具有自己的背景色,则只会在箭头上看到弹出窗口的背景色。 – arlomedia 2014-03-07 03:39:56