【问题标题】:Show UiView above all views在所有视图之上显示 UiView
【发布时间】:2018-08-18 01:41:20
【问题描述】:

我试图将 UIView 显示在所有 navigationBar 、状态栏之上。

我尝试了设置导航 z 位置、将 UIView 添加到 UIWindow 并将 UIView 添加到 NavigationController 等选项。

Add a UIView above all, even the navigation bar

没有什么对我有用。

我的应用程序在 xcode 9.2、swift 4.0、ios 11 上。

【问题讨论】:

  • @the4kman 视图可以与状态栏重叠。
  • @the4kman 这不是覆盖,而是系统窗口。从技术上讲,您可以创建一个甚至位于状态栏上方的窗口。还有一些方法可以动态访问它,但我不建议这样做:)
  • @the4kman 不是真的,我看到应用程序在状态栏上方显示通知消息。见github.com/cezarywojcik/CWStatusBarNotification。请注意,Apple 不会强制您显示状态栏,这就是您可以为视图控制器完全隐藏它的原因。

标签: ios swift


【解决方案1】:

在主窗口添加overlayView:

if let window = UIApplication.shared.keyWindow {
    let overlayView = UIView()
    overlayView.frame = window.frame
    overlayView.backgroundColor = .red
    window.addSubview(overlayView)
}

【讨论】:

  • 我发现对 UIView 有约束的问题不适用于 UIApplication.shared.keyWindow 所以,我删除了约束并且它起作用了。请更新
  • 这很完美,但我试图在添加的视图中按下按钮,但方法没有被调用!你知道为什么吗?
  • EnasAZ,请为 UIButton 添加目标。
猜你喜欢
  • 2011-04-11
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-20
  • 1970-01-01
  • 2011-10-28
  • 1970-01-01
相关资源
最近更新 更多