我有一个UIViewController
视图作为另一个视图之上的子视图/模态UIViewController
,例如子视图/模态应该是透明的,并且添加到子视图的任何组件都应该是可见的。问题是我的子视图显示黑色背景而不是具有clearColor。我正在尝试将UIView
其设置为 clearColor 而不是黑色背景。有人知道它有什么问题吗?任何建议表示赞赏。
第一视图控制器.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:vc animated:NO];
第二视图控制器.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.opaque = YES;
self.view.backgroundColor = [UIColor clearColor];
}
已解决:我解决了这些问题。它适用于 iPhone 和 iPad。没有黑色背景的模态视图控制器只是 clearColor/transparent。我唯一需要更改的就是替换UIModalPresentationFullScreen
为UIModalPresentationCurrentContext
. 那是多么简单!
第一视图控制器.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];
注意:如果您使用以下modalPresentationStyle
属性navigationController
:
第一视图控制器.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];
注意:坏消息是上面的解决方案在 iOS 7 上不起作用。好消息是我修复了 iOS7 的问题!我向某人寻求帮助,他是这样说的:
当以模态方式呈现视图控制器时,iOS 会在其呈现期间从视图层次结构中移除其下方的视图控制器。虽然模态显示的视图控制器的视图是透明的,但它下面除了黑色的应用程序窗口之外什么都没有。iOS 7 引入了一种新的模态呈现样式,UIModalPresentationCustom
这会导致 iOS 不会移除呈现的视图控制器下方的视图。但是,为了使用这种模态演示样式,您必须提供自己的转换委托来处理演示和关闭动画。这在 WWDC 2013 https://developer.apple.com/wwdc/videos/?id=218的“使用视图控制器的自定义转换”演讲中进行了概述,其中还介绍了如何实现您自己的转换委托。
您可能会在 iOS7 中看到我对上述问题的解决方案:https ://github.com/hightech/iOS-7-Custom-ModalViewController-Transitions