2011-03-31 74 views
2

在我的Ipad应用程序中,我使用弹出窗口,但是我无法使其透明。 popover里面有一个tableview;我的代码是:弹出窗口和透明的桌面

UIViewController* popoverContent = [[UIViewController alloc] init]; 
UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(600, 800, 100, 100)]; 
popoverView.backgroundColor = [UIColor greenColor]; 
popoverContent.view = zoneViewController.view; 
self.popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent]; 
[self.popoverController presentPopoverFromRect:CGRectMake(1200, -200, 50, 375) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:TRUE]; 
[[[popoverController contentViewController] view] setAlpha:0.25f]; 

我能够使透明只有tableview,但popover仍然黑...为什么??

回答

0
[[[popoverController contentViewController] view] setAlpha:0.25f]; 

这会修改zoneViewController视图的透明度,它将嵌套在Popover中。但是,目前您无法自定义Popover本身的外观。您可以控制大小和箭头方向,但不能控制Popover的边框颜色或边框透明度。

如果你真的想要一个透明的Popover框架,你必须自己写。

相关:How to customize/style a UIPopoverController

+0

讨论我不想控制边框颜色o边框透明度,但只有桌面背景的透明度。如果我用这段代码设置了我的tableview的alpha = 0:[[[popoverController contentViewController] view] setAlpha:0.25f];我看到所有黑色的popover ...我怎样才能设置alpha的popover背景?它仍然是黑色的吗? – CrazyDev 2011-04-01 07:39:16

+0

@blackguardian - popover的背景颜色也不能自定义。如果你想要透明度,你可能必须编写自己的popover类(这应该不会太难)。 – 2011-04-01 09:05:36

+0

然后你终于告诉我,我永远不会有透明效应的popover ......是不是? – CrazyDev 2011-04-01 09:32:33

3

我花了几个小时试图在这个网站上列出的每个解决方案,使透明度上含有GROUPED UITableView一个UIPopoverController工作 - 其中没有工作对我来说:

  1. 把父视图中的弹出窗口并更改该视图上的alpha。 (FAILED)
  2. 变化子视图的各种组合(的tableview背景,tableview中细胞,酥料饼的背景等)
  3. 添加背景视图到细胞中并更改这些阿尔法阿尔法。 (FAILED)
  4. 最后:更改在层级从酥料饼的内容视图开始EVERY视图阿尔法(FAILED)

有一个在其具有1.0的alpha酥料饼的一个黑色根视图和它不”不管你对子视图做什么(或者如果你把它放在超级视图中),透明度都不起作用。所以,我爬了视图层次结构(通过试验和错误),直到我到达那个被诅咒的黑色视图并明确设置ITS alpha。成功!我只需要添加一行代码,弹出窗口可见:

self.popoverController.contentViewController.view.superview.superview.superview.alpha = 0.5; 

N.B.当Apple更新UIPopoverController时,此解决方案可能会停止工作,因此请自担风险!