模态视图控制器使背景变黑

Posted

技术标签:

【中文标题】模态视图控制器使背景变黑【英文标题】:Modal View Controller making background black 【发布时间】:2012-06-06 05:34:54 【问题描述】:

我正在从视图控制器启动模态视图控制器。模态视图控制器中的所有内容都显示正常,除了父视图控制器变黑。当模态视图控制器被解除时,父级被绘制。谁能指出我哪里出错了?这是我正在使用的代码:

modalVC.modalPresentationStyle = UIModalPresentationFormSheet;
self.navigationController = [[UINavigationController alloc] initWithRootViewController: modalVC];

[currentViewController presentModalViewController: self.navigationController animated: YES];
self.navigationController.view.frame = CGRectMake(200, 200, 320, 540);

【问题讨论】:

【参考方案1】:

我终于找到了问题所在。这是我的错误。

这是罪魁祸首:

self.navigationController.view.frame = CGRectMake(200, 200, 320, 540);

应该是:

self.navigationController.view.superview.frame = CGRect(200,200,320, 540);

【讨论】:

我在 viewDidLoad [self.view setTranslatesAutoresizingMaskIntoConstraints:NO]; 中执行此操作,我猜它会将视图缩小到 0,0。【参考方案2】:

是因为这条线。

modalVC.modalPresentationStyle = UIModalPresentationFormSheet;

来自UIViewController Class Reference(强调我的):

UIModalPresentationFormSheet

呈现的视图的宽度和高度小于屏幕的宽度和高度,并且视图在屏幕上居中。如果设备处于横向并且键盘是可见的,则视图的位置会向上调整,以使视图保持可见。 所有未覆盖的区域都会变暗,以防止用户与其互动。

【讨论】:

非常感谢您的回复。其他区域没有变暗,只是在弹出框消失之前变黑。 我终于找到了问题所在。这是我的错误。这是罪魁祸首:self.navigationController.view.frame = CGRectMake(200, 200, 320, 540); 应该是:self.navigationController.view.superview.frame = CGRect(200,200,320, 540);

以上是关于模态视图控制器使背景变黑的主要内容,如果未能解决你的问题,请参考以下文章

模态转场导致黑屏

UISearchController 使控制器变黑

加载黑色背景的模态视图控制器

如何呈现具有透明背景的模态视图控制器

如何使模态视图控制器透明

为模态视图显示透明背景