0

可能重复:
导航控制器上的透明模式视图

我想让我的 viewController 透明backgroundColor,但我没有运气..

我试图设置/使用...

  • self.view.backgroundColor = [UIColor clearColor];- 我仍然有白色背景。
  • self.view.alpha = .0f; - 我在 VC 中的所有东西都不见了,但我仍然有白色背景
  • self.view.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:.7f]在我的透明视图下方仍然是白色背景。

编辑1:

测试:

  • iPad3、iOS 6.0
  • iPad 6.0 模拟器
4

5 回答 5

2

经过更多研究后,我发现了这种方法:

原始代码:

MyViewController *popUpViewController = [[MyViewController alloc] init];
[self presentModalViewController:popUpViewController animated:YES];
[popUpViewController release];

修改后的代码:

TTPopUpViewController *popUpViewController = [[TTPopUpViewController alloc] init];
popUpViewController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:popUpViewController animated:YES];
[popUpViewController release];

所以你可以看到我modalPresentationStyle在我的 ViewController 上使用了我不想展示的属性,就在调用之前presentModalViewController:animated:

注意:我的 ViewController 视图的大小为 {680, 700}

它显示了我的 ViewController 视图的大小,{540, 620}因为我的原始大小更大,所以我隐藏了部分边框和阴影,但对我的视图外观和感觉几乎没有修改就可以了。

然而,这种方法似乎给了我想要的东西。

========

有关更多信息,请参阅以下 Apple 文档:

UIViewController 类参考

于 2012-10-11T17:31:01.397 回答
1

通常不可能使用 presentModalViewController。这是一个带有解决方法的类似问题:

导航控制器上的透明模式视图

于 2012-10-11T16:11:21.003 回答
1

您正在做的问题是,在呈现新的 ViewController 后,透明视图下方的 ViewController 视图从屏幕上移除。在当前 ViewController 之上手动添加一个新视图并将其设置为透明将起作用。

于 2012-10-11T16:14:53.573 回答
0

您不能使用 presentViewController 来实现这一点,但是有一种方法 - 这不是很优雅。

.h file
@propert(strong,nonatomic) MyCustomViewController *myCustomVC;

.m file
-(void) presentTransparentViewController
{
if(self.myCustomVC==nil) {
    _myCustomVC = [[MyCustomViewController alloc] init];
    }

self.myCustomVC.view.backgroundColor = [UIColor clearColor];
UIView *view = self.myCustomVC.view;
view.opaque = NO;

view.frame = self.view.frame; //assuming the views are the same size
[self.view addSubview:view];
}

您还可以在主屏幕框架下方添加视图并用动画呈现它。

于 2012-10-11T16:21:25.413 回答
0

我刚刚找到了解决方法。只需创建一个 1X1 的 UIViewController 并将其添加到您的父视图控制器。并在该 UIViewController 中显示模态视图控制器。

在 viewDidLoad 上;

self.dummyViewController = [[UIViewController alloc] init];
 [self.dummyViewController.view setFrame:CGRectMake(0, 0, 1, 1)];
 [self.view addSubView:self.dummyViewController.view];

当你需要打开一个transparentViewController时;

[self.dummyViewController presentModalViewController:yourTransparentModalViewController animated:true];
于 2012-10-29T10:38:04.487 回答