繁体   English   中英

IOS 13 没有在 iPhone 的状态栏上显示带有 level.statusbar 的 UIWindow

[英]IOS 13 not making UIWindow with level .statusbar present over status bar of iPhone

我在 iphone 的状态栏上添加了一个覆盖。 但是当我在 xcode 11.1 上切换到 IOS 13.1 时,我无法使用 UIWindow class 在状态栏上显示它

class PassTroughWindow: UIWindow {
    var passTroughTag: Int?

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {

        let hitView = super.hitTest(point, with: event)

        if let passTroughTag = passTroughTag {
            if passTroughTag == hitView?.tag {
                return nil
            }
        }
        return hitView
    }
}


    class ViewController: UIViewController {
                        var window: PassTroughWindow?
             @IBAction func alertButtonPressed(_ sender: UIButton) {
                        print("Height : \(UIApplication.shared.statusBarFrame.height)")
                        print("Height : \(UIApplication.shared.statusBarFrame.maxY)")
                        let frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: UIApplication.shared.statusBarFrame.maxY)
                        let banner = UIView(frame: frame)
                        banner.layer.cornerRadius = 2.5
                        banner.backgroundColor = UIColor.init(red: 128.0/255.0, green: 161.0/255.0, blue: 193.0/255.0, alpha: 1.0)

                        let label = UILabel.init(frame: CGRect.init(x: 0, y: 0, width: frame.width, height: frame.height))
                        label.textAlignment = .center
                        label.font = .boldSystemFont(ofSize: 10)
                        label.text = "No internet connection"
                        label.textColor = .black
                        banner.addSubview(label)

                        self.window = PassTroughWindow(frame: UIScreen.main.bounds)
                        self.window?.rootViewController = UIViewController()
                        self.window?.windowLevel = .statusBar + 1
                        self.window?.addSubview(banner)
                        self.window?.makeKeyAndVisible()
                        self.window?.alpha = 1.0

                    }

        }

如果在 IOS 13.1 上的 Xcode 11.1 中执行相同的代码,那么它会在调试器 () 中给出以下结果:- 在此处输入图像描述

而在 IOS 12.2 上的 xcode 10.2 中,它给了我这个结果

在此处输入图像描述

IOS 13.1、Xcode 11.1 的最终结果是

在此处输入图像描述

IOS 12.2, xcode 10.2 的最终结果是

在此处输入图像描述

如何在 IOS 13 中的状态栏上显示叠加层?

相关的 API 和值应该在文档中被弃用。

我们目前拥有的解决方法是覆盖prefersStatusBarHidden

查看我在这里找到的帖子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM