【问题标题】:on pushViewController AlphaComponent not working在 pushViewController AlphaComponent 上不起作用
【发布时间】:2019-07-13 23:57:06
【问题描述】:

我正在尝试从 NavigationController 推送视图控制器,并且在视图控制器中我将 AlphaComponent 设置为透明效果,但它不起作用。现在可以用,push不能用,怎么解决?

    let vc = SGeoLocation(nibName: "SGeoLocation", bundle: nil)
    self.navigationController?.pushViewController(vc, animated: true)

【问题讨论】:

  • 你在过渡状态下这样做?
  • 为什么要设置模态显示样式来查看控制器,然后再将其推送到导航控制器上?你想达到什么目的?您想将导航控制器嵌入到视图控制器并以模态方式呈现吗??
  • 我猜你的背景是黑色的?
  • 是的,它变黑了@MohmmadS
  • 你想创建弹出窗口吗?

标签: ios swift iphone cocoa-touch pushviewcontroller


【解决方案1】:

嗯,这是因为您的 UIViewcontrollers 的层次结构

让我简单解释一下,

UINavigationControllerUIViewControllers后进先出堆栈, 当您将UIViewController 压入堆栈时,意味着您的UIViewController 后面没有任何内容,因为UIWindow 层次结构在UINavigationController 中包含一个元素。

查看此图片,以解释什么是后进先出堆栈,将其视为您的 UINavigationViewController 及其 UIViewControllers 数据元素

现在为什么它在您 present UIViewController 时起作用,仅仅是因为您将 UIViewController 覆盖在当前可见的顶部。

查看此图片,了解演示的工作原理。

总结

当您在当前设置View.backgroundColor = .clear 时,您可以看到当前UIViewController 的背后,但是当您按下时您只会看到黑屏,因为那里没有任何东西。

简答: 除非你在场,否则你看不到背后的东西。

【讨论】:

  • 你不能,这就解释了为什么,你必须呈现,
  • 我认为你想要一个从场景顶部右侧滑动的弹出框,对吗?
  • 如果您确实想要透明背景,可以尝试将窗口背景颜色设置为清除。但这仍然不会覆盖在之前的 VC 之上,因为它是一个 push segue。
【解决方案2】:

在初始化时 SelectGeoLocation 的视图没有加载。

您是否尝试将 self.view.alpha = xxx 放入您的 SelectGeoLocation-ViewDidLoad 中?

【讨论】:

  • 请重新阅读您的答案并将其格式化以适合 OP 问题 + 如果您不确定答案,也许您应该将其发布为评论。
  • 感谢您的反馈
猜你喜欢
  • 2013-09-04
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
相关资源
最近更新 更多