Popover和tableview透明

时间:2011-03-31 17:02:24

标签: objective-c xcode uitableview uipopovercontroller alpha

在我的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];

我只能使桌面视图透明,但是popover仍然是黑色......为什么?

4 个答案:

答案 0 :(得分:3)

我花了几个小时尝试此网站上列出的每个解决方案,以便透明地处理包含GROUPED UIPopoverController的{​​{1}} - 其中没有一个对我有效:

  1. 将popover放在父视图中并更改THAT视图上的alpha。 (FAILED)
  2. 更改各种子视图组合的alpha(tableview背景,tableview单元格,popover背景等)
  3. 向单元格添加背景视图并更改其中的alpha。 (FAILED)
  4. 最后:从弹出式内容视图(FAILED)开始更改层次结构中每个视图的alpha值
  5. popover中有一个黑色根视图,其alpha值为1.0,无论您对子视图执行什么操作(或者如果您将其粘贴在superview中),透明度都不起作用。所以,我爬上了视图层次结构(通过反复试验),直到我到达那个被诅咒的黑色视图并明确设置了ITS alpha。成功!在弹出窗口可见之后,我必须添加的是一行代码:

    UITableView

    N.B。

    1}当Apple更新self.popoverController.contentViewController.view.superview.superview.superview.alpha = 0.5; 时,此解决方案可能会停止工作,因此请自行承担风险!

答案 1 :(得分:0)

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

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

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

相关:How to customize / style a UIPopoverController

答案 2 :(得分:0)

从iOS 5开始,您可以设置自定义UIPopoverBackgroundView。查看Customizing the UIPopoverController view background and border color

上的讨论

答案 3 :(得分:0)

默认情况下,popover是透明的。如果将子视图放入“弹出”视图,则必须使子视图“backgroundColor透明。”

因此,在您的情况下,您需要将tableView的backgroundColor属性设置为[UIColor clearColor],并且还需要使tableView单元格透明。

不要忘记让你的细胞透明!