【问题标题】:ios 8 addSubview causes a black screen in backgroundios 8 addSubview 导致背景黑屏
【发布时间】:2014-10-07 07:35:12
【问题描述】:

这是一种非常奇怪的行为,我不知道出了什么问题。在 iOS7 中,以下代码按预期工作,但在 iOS 8 中,它有一个奇怪的行为。

    UIView *mainPopupView = [[UIView alloc] initWithFrame:CGRectMake(10, ([UIScreen mainScreen].bounds.size.height-300)/2-50+20, 300, 380)];
    mainPopupView.backgroundColor = [UIColor whiteColor];
    [self.view addSubview:mainPopupView];

在 iOS7 中,这些代码在当前视图控制器中添加了一个白色的 mainPopupView,一切正常。但是在iOS8中,mainPopupView出现后,mainPopupView后面会出现一个黑屏(就像一个带有Black blackgroundColor的UIView)。 IMO 关于 addSubview: 方法有一些变化,我在 Google 上尝试了各种搜索但没有结果。请任何人向我解释为什么会发生这种情况以及如何解决它?

提前致谢。

【问题讨论】:

  • 很抱歉我没有正确描述它。 mainPopupView 是self.view 的一个子视图,而这个“self”是一个视图控制器,假设类名是PopupViewController。在另一个控制器中,我使用 [self presentViewController:ppvc animated:NO completion:nil] (ppvc 是 PopupViewController 的一个实例),黑色背景在显示 ppvc 后的 mainPopupView 后面。在 ios7 中,不显示黑色背景视图。那么问题出在哪里:(

标签: ios objective-c ios8 addsubview


【解决方案1】:

尝试在模态显示之前将 PopupViewController 实例的 modalPresentationStyle 设置为 UIModalPresentationCustom。

如果您想知道为什么会发生这种情况,当您呈现 UIViewController 时,在过渡动画完成后,前一个视图控制器将从窗口层次结构中删除,因为它没有被显示。当您将模态展示样式设置为自定义时,您是在告诉系统不要删除正在展示的视图控制器。我不知道为什么它在 iOS8 之前工作。

【讨论】:

  • 嘿,它有效,我将它设置到我的实例并且它有效:x 你救了我的一天,伙计:x
  • 那么您能否向我解释一下为什么我在 viewDidLoad: 方法中设置了 viewcontroller 的 modalPresentationStyle(不是设置实例)并且它没有按预期工作:(这些之间有什么不同两个或者我错过了什么:(
  • @Merkurial 我不确定,但可能在触发模态演示后调用 viewDidLoad 。也许如果您将代码放在 VC 的 init 方法中,它会起作用。无论如何,应该由演示者视图控制器决定如何呈现第二个视图控制器,而不是第二个视图控制器本身。
  • 是的,您阐明了展示 vc 和 vc 本身之间的区别,因此回答了我的问题:x 非常感谢(y)
猜你喜欢
  • 2012-11-08
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-03
相关资源
最近更新 更多